क्यों मैं लिनक्स में एक विशिष्ट उपयोगकर्ता की अनुमति (ROOT को छोड़कर) के साथ अच्छा () फ़ंक्शन का उपयोग करके प्रक्रिया की प्राथमिकता को कम कर सकता हूं?


0

जैसा कि मैं समझता हूं कि लिनक्स में प्रत्येक उपयोगकर्ता अच्छा और त्याग आदेशों का उपयोग करके हर प्रक्रिया की प्राथमिकता को बदल सकता है। मुझे यह भी पता है कि सभी उपयोगकर्ता सिर्फ प्रक्रियाओं की प्राथमिकता को बढ़ा सकते हैं और एकमात्र उपयोगकर्ता जो इस प्राथमिकता को कम कर सकता है वह है ROOT। जब मैं इन आदेशों का उपयोग करके टर्मिनल वातावरण में यह परीक्षण करता हूं तो सब कुछ ठीक था। इसका मतलब यह है कि जब मैं प्रक्रिया की प्राथमिकता को कम करना चाहता हूं तो सिस्टम "अनुमति अस्वीकृत" पाठ संदेश जारी करता है। जैसा कि मैं डिफ़ॉल्ट रूप से भी जानता हूं कि सभी प्रक्रियाएं प्राथमिकता से चलती हैं। इसलिए 0जब मैं एक नकारात्मक संख्या द्वारा प्रक्रिया की प्राथमिकता निर्धारित करना चाहता हूं, तो सिस्टम को एक त्रुटि पाठ जारी करना चाहिए। जब मैं यह C भाषा कार्यक्रम चलाता हूं:

#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.सही है?


हो सकता है, आपका मतलब है "वृद्धि बढ़ाएँ"? एक प्रक्रिया की सुंदरता प्राथमिकता के विपरीत अवधारणा है। सभी प्रक्रियाएं उनके प्रोसेसर के उपयोग को कम कर सकती हैं (== इसकी अच्छाई बढ़ाएं, == प्राथमिकता को कम करें), लेकिन केवल रूट प्रक्रियाएं पहले से अधिक खा सकती हैं।
दिमित्रो सिरेंको 20

हां, बिल्कुल मेरा सवाल यह है कि आप नीस के बारे में हैं। आप लिख सकते हैं "सभी प्रक्रियाएं अपने प्रोसेसर के उपयोग को कम कर सकती हैं, लेकिन केवल रूट प्रक्रिया पहले की तुलना में अधिक हो सकती है।"

यह एक सुरक्षा निर्णय है: डेनियल ऑफ सर्विस को असंभव बनाने के लिए, मुझे लगता है। उपयोगकर्ताओं को प्रक्रियाओं की प्राथमिकता बढ़ाने की आवश्यकता है, लेकिन कुछ दुर्भावनापूर्ण उपयोगकर्ता इसका उपयोग सिस्टम को नीचे लाने के लिए कर सकते हैं, इसलिए केवल रूट (वास्तव में विश्वसनीय उपयोगकर्ता) को इसे करने की अनुमति है।
Dmytro Sirenko

हां, लेकिन जब मैं nice()अपने कार्यक्रम में फ़ंक्शन का उपयोग करता हूं, तो मैं प्रक्रिया की प्राथमिकता को कम कर सकता हूं (हालांकि मेरे पास मेरे ठेठ हैं?)?

जवाबों:


1

आजाद, आप अच्छे मूल्य को कम करने में सक्षम नहीं हैं; आपने बस यह चुना है कि आप जो कर रहे हैं, उसके परिणाम की जांच न करें। नकारात्मक वृद्धि को लागू करने का प्रयास करने के बाद r की सामग्री की जाँच करें। यह -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

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.