2008-12-08 21 views
18

तो मेरे पास एक स्क्रिप्ट है जिसे मैं रूट के रूप में चलाने के लिए, बिना लटकने और अच्छी तरह से चलाने के लिए चाहता हूं। मुझे आदेशों को किस क्रम में रखना चाहिए?सुडो नोह अच्छा <- किस क्रम में?

sudo nohup अच्छा foo.bash &

या

nohup अच्छा sudo foo.bash &

आदि

मैं इसे कोई फर्क नहीं पड़ता, लेकिन से कुछ जानकारी चाहते हैं पर शक जो वास्तव में पता है।

उत्तर

10

नकारात्मक सुंदरता वांछित है, तो मुझे क्या करना होगा: sudo nohup अच्छा कमांड क्योंकि `info coreutils 'nohup के अनुसार अच्छा होना चाहिए। अगर मुझे नकारात्मक अच्छा मूल्य चाहिए, तो सूडो पहले आना चाहिए, क्योंकि केवल रूट नकारात्मक अच्छे मूल्यों का उपयोग करने में सक्षम है।

यदि सकारात्मक अच्छीता वांछित है, तो मैं बस करूँगा: नोहूप अच्छा सुडो कमांड यह सुनिश्चित करता है कि रूट विशेषाधिकारों के साथ कोई भी अच्छा और अच्छा नहीं चल रहा है।

6

सूडो को आखिरी बार जाना चाहिए ताकि रूट विशेषाधिकारों के साथ नोहुप और अच्छा नहीं चल रहे हों।

तो बाद

6
~ $ sudo nohup nice whoami 
nohup: ignoring input and appending output to `nohup.out' 
~ $ sudo cat nohup.out 
root 

पहली और दूसरी तरह से आप किया है के बीच अंतर यह है जो nohup.out फ़ाइल का मालिक है। sudo पहले इसे रूट, nohup के स्वामित्व में रखेगा इससे पहले कि सुडो इसे आपके उपयोगकर्ता के स्वामित्व में लाएगा।

1

मुझे लगता है कि वे सभी गेंद को अगली बार पास करने के लिए एक निष्पादन * syscall करते हैं, इसलिए, जो कुछ भी आदेश है, वह किसी भी लटकती प्रक्रिया को नहीं छोड़ेगा।

मैं कहूंगा कि नोहप आखिरी होना चाहिए ताकि दोनों अन्य सिग्नल हैंडलर को न दबाएं। (मुझे यकीन है कि सिग्नल के साथ अच्छा नहीं खेलता है, लेकिन सुडो करता है।)

फिर, सुडो और अच्छा, यह सब इस बात पर निर्भर करता है कि आप किस तरह से शेड्यूलिंग प्राथमिकता को अच्छे से बदलना चाहते हैं।

  • यदि आप प्राथमिकता (यानी, अच्छा करने के लिए ऋणात्मक मूल्य दें) पहले सूडो करना चाहते हैं।
  • यदि आप प्राथमिकता को कम करना चाहते हैं (अच्छा सकारात्मक मूल्य दें) तो इसे सूडो से पहले करें, क्योंकि आपको रूट विशेषाधिकारों की आवश्यकता नहीं है।
+0

आपके उत्तर के लिए धन्यवाद। क्या आप संकेतों के साथ खेल रहे सूडो पर विस्तार कर सकते हैं? (या सिर्फ एक लिंक प्रदान करें :) धन्यवाद! –

9

सूडो अच्छी तरह से सम्मान नहीं कर सकता है। कम से कम, यह मेरी मशीन (उबंटू 9.04) पर नहीं है। इस चल रहा है:

nice sudo nice 
sudo nice nice 

0 और 10 बाहर प्रिंट (। ध्यान दें कि बाहर वर्तमान सुंदरता के लिए कोई आदेश प्रिंट के साथ 'अच्छा')

+0

हर दूसरे उत्तर को यह गलत लगता है। डेबियन निचोड़ एक जैसा है: अच्छीता 'सुडो' के माध्यम से नहीं रहती है। यह भी शर्म की बात है, क्योंकि एक बढ़िया 'सूडोर्स' एक अनुमत आदेश को अच्छी तरह से चलाएगा। –

3

अन्य उत्तरों के साथ असहमत।मेरा सुझाव है:

sudo nohup nice foo.sh

मैं देखा है nohup sudo #fail - यानी nohup हमेशा उप उप प्रक्रियाओं sudo'd को हस्तांतरित नहीं किया गया है (यह कुछ/etc/init के लिए किया गया था। उबंटू पर डी स्क्रिप्ट्स जो अभी तक अन्य स्क्रिप्ट्स को सौंपी गई हैं)। निश्चित नहीं है कि क्यों, निश्चित रूप से आश्चर्यजनक, लेकिन मामला था और डीबग करने के दौरान एक अच्छा वीन लिया।

(मुझे लगता है कि दूसरों को अच्छी तरह से रिपोर्ट नहीं किया जा रहा है, इसलिए इसे अंतिम बार रखना अच्छा लगता है ... हालांकि यदि आपके ओएस पर संदेह है तो पहले अच्छा लगा, क्योंकि प्रभाव न लेने से आमतौर पर नोहुप की तुलना में कोई समस्या नहीं होती है से लागू होने वाली)

ध्यान दें कि nohup sudo nohup.out, जड़ के स्वामित्व वाले पत्ते के रूप में भी उल्लेख किया गया है, लेकिन यह भी निश्चित होती है एक साथ:

sudo nohup nice foo.sh >> /tmp/foo.stdout.log 2>> /tmp/foo.stderr.log