سؤال

لذلك لدي نص أريد تشغيله كجذر ، دون تعليق ولطيف. ما الترتيب الذي يجب أن أضعه فيه؟

Sudo Nohup nice foo.bash &

أو

nohup nice sudo foo.bash &

إلخ.

أظن أن هذا لا يهم ولكنه أرغب في نظرة ثاقبة من أولئك الذين حقًا أعرف.

هل كانت مفيدة؟

المحلول

إذا كان اللطف السلبي مطلوبًا ، فسأفعل: أمر Sudo Nohup Nice لأنه وفقًا لـ "المعلومات الأساسية" مسبق لطيف. إذا كنت أرغب في الحصول على قيمة سالبة لطيفة ، فيجب أن يأتي Sudo من قبل ، لأن الجذر فقط قادر على استخدام القيم اللطيفة السلبية.

إذا كان اللطف الإيجابي مطلوبًا ، فسأفعل ببساطة: NOHUP NICE SUDO أمر يضمن عدم تشغيل NOHUP و NICE مع امتيازات الجذر.

نصائح أخرى

قد لا يحترم سودو اللطف. على الأقل ، لا على جهازي (Ubuntu 9.04). تشغيل هذا:

nice sudo nice
sudo nice nice

يطبع 0 و 10. (لاحظ أن "لطيف" بدون أمر يطبع اللطف الحالي.)

يجب أن يستمر Sudo حتى لا يتم تشغيل Nohup و Nice مع امتيازات الجذر.

لذلك الأخير

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

الفرق بين الطريقة الأولى والثانية التي قمت بها هو من يملك ملف nohup.out. sudo أولاً سيجعلها مملوكة للجذر ، nohup قبل أن تجعل Sudo مملوكة للمستخدم.

تعارض مع إجابات أخرى. انصح:

sudo nohup nice foo.sh

لقد لاحظت Nohup سودو #يفشل -لا يتم نقل nohup دائمًا إلى عمليات Sudo'd Sub-Sub-Subs (كان هذا مؤكدًا /etc/init.d على Ubuntu التي فوضت حتى الآن البرامج النصية الأخرى). لست متأكداً من السبب ، من المدهش بالتأكيد ، ولكن كان الحال وأخذت لعبة جيدة أثناء تصحيحها.

(ألاحظ أن الآخرين يذكرون أن اللطف لا يتم إقراره ، لذلك يبدو من الأفضل وضعه في النهاية ... على الرغم من أنه إذا كان من الشك على نظام التشغيل الخاص بك لطيفًا في وقت مبكر ، لأن من الجيد عدم سريانه عادةً ما يكون مشكلة أقل من عدم ساري المفعول!)

لاحظ أن سودو نوهوب يترك nohup.out مملوكة لـ Root ، كما تم ذكره أيضًا ، لكن هذا ثابت مع:

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

أعتقد أن جميعهم يقومون بعمل exec* syscall لتمرير الكرة إلى الكلام التالي ، لذلك ، مهما كان الأمر ، فلن يترك أي عمليات معلقة.

أود أن أقول أن Nohup يجب أن يكون آخر حتى لا يلتزم الاثنان الآخران بوجه الإشارة. (أنا متأكد من أن Nice لا تلعب بإشارات ، لكن Sudo يفعل ذلك.)

ثم ، Sudo و Nice ، كل هذا يتوقف على الطريقة التي تريد تغيير أولوية الجدولة مع Nice.

  • إذا كنت ترغب في رفع الأولوية (أي ، أعط قيمة سلبية لـ NICE) افعل Sudo من قبل.
  • إذا كنت ترغب في خفض الأولوية (إعطاء قيمة إيجابية لطيفة) افعلها قبل Sudo ، حيث لا تحتاج إلى امتيازات الجذر.
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top