আমি কেন লিনাক্সে একটি সাধারণ ব্যবহারকারীর অনুমতি (রুট ব্যতীত) সুন্দর () ফাংশন ব্যবহার করে প্রক্রিয়াটির অগ্রাধিকার হ্রাস করতে পারি?


0

আমি যেমন বুঝতে পেরেছি লিনাক্সের প্রতিটি ব্যবহারকারী সুন্দর এবং রেনিস কমান্ড ব্যবহার করে প্রতিটি প্রক্রিয়াটির অগ্রাধিকার পরিবর্তন করতে পারে। এছাড়াও আমি জানি যে সমস্ত ব্যবহারকারীরা কেবলমাত্র প্রক্রিয়াগুলির অগ্রাধিকার বাড়িয়ে তুলতে পারেন এবং একমাত্র ব্যবহারকারী যা এই অগ্রাধিকার হ্রাস করতে পারে তা হ'ল মূল। আমি যখন এই কমান্ডগুলি ব্যবহার করে টার্মিনাল পরিবেশে এটি পরীক্ষা করি তখন সবকিছু ঠিক ছিল। আমি যখন প্রক্রিয়াটির অগ্রাধিকার হ্রাস করতে চাই তখন সিস্টেম "অনুমতি অস্বীকৃত" পাঠ্য বার্তা জারি করে। আমি যেমন জানি ডিফল্টরূপে সমস্ত প্রক্রিয়া অগ্রাধিকার সহকারে চলে। সুতরাং 0যখন আমি কোনও নেতিবাচক সংখ্যা দ্বারা কোনও প্রক্রিয়াটির অগ্রাধিকার সেট করতে চাই, সিস্টেমকে অবশ্যই একটি ত্রুটি পাঠ্য জারি করতে হবে। আমি যখন এই সি ভাষা প্রোগ্রামটি চালিত করি:

#include<stdio.h>
#include<unistd.h>
void main()
{
int n=10,r;
r=nice(n);
while(1)
    printf("Test);
}

আমি প্রত্যাশা করেছি যে সিস্টেমটি একটি ত্রুটি দেখায় তবে প্রোগ্রামটি কোনও সমস্যা ছাড়াই চলে! যদিও প্রোগ্রামটি একটি সাধারণ ব্যবহারকারীর অনুমতি দ্বারা চালিত হয়। আমি জানতে চাইছি কেন যখন আমি সিস্টেমের ত্রুটিটি প্রত্যাশিত অনুযায়ী রাইনিস কমান্ড ব্যবহার করে প্রক্রিয়াটির অগ্রাধিকার হ্রাস করতে চাই, তবে যখন আমি nice()ফাংশনটি ব্যবহার করে প্রক্রিয়াটির অগ্রাধিকার হ্রাস করতে চাই তখন প্রোগ্রামগুলি কোনও ত্রুটি দেয় না? এই বাক্যটি কি All users just can increase the priority of process and the only user that can decrease this priority is ROOT.সঠিক?


হতে পারে, আপনার মানে "কৌতূহল বৃদ্ধি"? প্রক্রিয়াটির বিশুদ্ধতা অগ্রাধিকারের একটি বিপরীত ধারণা। সমস্ত প্রক্রিয়াগুলি তাদের প্রসেসরের ব্যবহার হ্রাস করতে পারে (== এটির বিশেষত্ব বৃদ্ধি করে, == অগ্রাধিকারটি বর্ণিত করে) তবে কেবলমাত্র রুট প্রসেসগুলি আগের চেয়ে বেশি খেতে পারে।
Dmytro সিরেনকো

হ্যাঁ, ঠিক আমার প্রশ্নটি উদাসীনতার বিষয়ে y আপনি লেখেন "সমস্ত প্রক্রিয়া তাদের প্রসেসরের ব্যবহার হ্রাস করতে পারে তবে কেবলমাত্র রুট প্রসেসগুলি আগের চেয়ে বেশি খেতে পারে" "আপনি কি ব্যাখ্যা করতে পারেন, দয়া করে? আমি এটি সঠিকভাবে বুঝতে পারি না।

এটি একটি সুরক্ষিত সিদ্ধান্ত: পরিষেবা অস্বীকারকে অসম্ভব করে তোলা, আমার ধারণা। ব্যবহারকারীদের প্রক্রিয়াগুলির অগ্রাধিকার বাড়ানো দরকার, তবে কিছু দূষিত ব্যবহারকারী একটি সিস্টেমকে নীচে আনার জন্য এটি ব্যবহার করতে পারে, সুতরাং কেবল মূলটি (সত্যিকারের বিশ্বস্ত ব্যবহারকারী) এটি করার অনুমতিপ্রাপ্ত।
Dmytro সিরেনকো

হ্যাঁ, তবে কেন আমি যখন nice()আমার প্রোগ্রামটিতে ফাংশনটি ব্যবহার করি, তখন আমি প্রক্রিয়াটির অগ্রাধিকার হ্রাস করতে পারি (যদিও আমার আমার সাধারণ ব্যবহারকারী আছে!)?

উত্তর:


1

আজাদ, আপনি ভাল-মূল্য হ্রাস করতে পারবেন না; আপনি কেবল যা করছেন তার ফলাফল যাচাই করা বেছে নেওয়া হয়নি। আপনি নেতিবাচক বর্ধিতকরণ প্রয়োগ করার চেষ্টা করার পরে আর এর সামগ্রীটি পরীক্ষা করুন। এটি -1 হবে যার অর্থ আপনার প্রচেষ্টা ব্যর্থ হয়েছে।


0
#include<stdio.h>
#include<unistd.h>
#include<sys/resource.h>
void main()
{
    int n=10;
    (void)setpriority(PRIO_PROCESS, 0, n);
    sleep(60);
    while(1)
        printf("Test");
}

প্রক্রিয়াটিকে প্রয়োজনীয় স্তরে অগ্রাধিকার সেট করার পরে, 1 মিনিট দেরি করুন যাতে আমরা শীর্ষ / পিএস কমান্ডে পরিবর্তিত অগ্রাধিকার পরীক্ষা করতে পারি। এই লিঙ্কটি দেখুন, http://linux.die.net/man/2/setpriority

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.