انجمنهای فارسی اوبونتو
کمک و پشتیبانی => راهنماها، نکات و ترفندها => نویسنده: رسول سعیدنژاد در 08 اسفند 1393، 06:29 بظ
-
سلام دوستان.
به این دو کامند زیر توجه کنین
sudo apt-get -y dist-upgrade
man history > log.log
دستور اول sudo داره و میشه اونو توی کرون ریشه تنظیم کرد.
دستور دوم sudo لازم نداره و میشه اونو توی کرون کاربر تنظیم کرد.
حالا سوال من:
از اونجایی که دستور معمولی (بدون sudo) توی کرون ریشه اجرا نمیشه و از اونجایی که دستور sudo دار، توی کرون معمولی با نوشتن echo "pass" | sudo اجرا میشه، من برای تنظیم این دستور توی کرون باید دقیقا چه گلی به سرش بگیرم؟ :D
00 01 * * * man history > log.log && apt-get -y dist-upgrade
1) یعنی برای اینکه یه خط دستور من، هم معمولیه هم ریشه ای، باید اینو توی کدوم کرون بذارم؟؟ ;D
2) یا با چه روشی میشه دستور معمولی رو توی کرون ریشه اجرا کرد؟؟
مرسی ;)
-
خب دستورات مخصوص هر کاربر رو در کرون خودش بزار ولی اگه میخوای یک دستور با دسترسی ریشه انجام بشه اون رو در فایل
/etc/crontab
بزار بدون sudo
-
خب دستورات مخصوص هر کاربر رو در کرون خودش بزار ولی اگه میخوای یک دستور با دسترسی ریشه انجام بشه اون رو در فایل /etc/crontab
بزار بدون sudo
خسته نباشی جناب :D
موضوع اینه که دستوری که من میدم نصفش معمولیه و نصف دیگه ش نیاز به دسترسی ریشه داره.
من میخوام یه دستور معمولی توی کرون ریشه اجرا بشه. قبلا دستورات ریشه رو توی کرون معمولی (با echo "pass" | sudo ) انجام میدادم. الان دیگه نمیخوام رمزم رو توی این کرون بنویسم و از یه طرف هم دستورات بدون ریشه هم در کنار با ریشه ها نیاز دارم.
فرض کن شما میخوای یه دستور man از یه نرم افزار بگیری توی یه ساعت مشخص. ولی توی کرون ریشه میخوای بنویسی. حالا فرض کن هم دستور ریشه ای هم معمولی پشت سر هم توی یه ساعت باید اجرا بشن (اول یکی اجرا بشه تموم شد بعدی رو بلافاصله اجرا کنه)
خب تو این جور مواقع چکار می کنی؟ ;)
-
برای بیشتر وقت ها راه حل اینه که بیاییم مثلا:
crontab -e
00 22 * * * man history > log.log
و مثلا
sudo crontab -e
01 22 * * * apt-get -y dist-upgrade
رو بزنیم. خب این که مشخصه.
موضوع این جاس که این دو دستور بالا (man و apt-get) رو من توی یه خط باید بدم. مثلا شب ها بعد از اینکه دانلود تموم شد، سیستم آپگرید میشه و بعد از آپگرید شدن خاموش میشه. سه تا دستور توی یه خط که با && به هم وصل شدن. یک دستور معمولیه و دو دستور نیاز به sudo داره.
خب من الان توی sudo crontab چجوری میتونم اون دستور معمولی رو وارد کنم؟؟؟
-
یه فایل بش بساز از این، بعد با سودو بده به کرون ریشه
-
یه فایل بش بساز از این، بعد با سودو بده به کرون ریشه
سلام.
یعنی دستورات معمولیم (مثل آریا2) رو بذارم توی بش و بش رو بدم به cron ریشه؟؟
همه جور دستوری رو شامل میشه؟؟ مثلا اجرا برنامه ها بدون sudo (مثلا با export DISPLAY و ...)؟؟
-
آره. داخل بشاسکریپت همهچیز رو بدون سودو بنویس، انگار که روت میخواد اجرا کنه، بعد خود بشاسکریپت رو بده به کرون ریشه
-
آره. داخل بشاسکریپت همهچیز رو بدون سودو بنویس، انگار که روت میخواد اجرا کنه، بعد خود بشاسکریپت رو بده به کرون ریشه
مرسی ;)
خب تا اینجا دوتا راه حل واسه مشکلم پیدا شد
روش شما توی همین تاپیک و روش مجتبی جان توی تاپیک قبلیم (http://forum.ubuntu.ir/index.php/topic,111922.0.html (http://forum.ubuntu.ir/index.php/topic,111922.0.html))
در حال حاضر بلد نیستم فایل بش بسازم. پس باید برم یاد بگیرم. روش مجتبی جان هم که هرچی تست می کنم جواب نمیده. فکر کنم مجتبی پارتیش کلفت تره ;D
-
کاری نداره. همهی دستوراتت رو پشت سر هم و هر کدوم رو در یک خط مینویسی توی یه پرونده. بعد بهش دسترسی اجرایی میدی:
$ chmod +x FILE
-
کاری نداره. همهی دستوراتت رو پشت سر هم و هر کدوم رو در یک خط مینویسی توی یه پرونده. بعد بهش دسترسی اجرایی میدی:
$ chmod +x FILE
یعنی مثلا اینو
aria2c -c -j1 -x16 -s16 -k 1M -d /home/kubuntu/Downloads -i /home/kubuntu/Desktop/Link.txt -l ~/Log/download.log --log-level=notice > ~/Log/aria2c.log
بذارم توی یه خط توی یه فایل متنی بعد با پسوند بش ذخیره ش کنم و بهش دسترسی اجرایی بدم و بعد توی کرون ریشه آدرسش رو بدم؟؟ دستورات sudo دار هم که قاعدتا بدون مشکلی توی کرون ریشه اجرا میشن.
-
دقیقاً (;
-
دقیقاً (;
مرسی ;)
تست میکنم و خبر میدم ;)
-
ای بابا اینم که نمیشه.
من یه دستور گذاشتم توی فایل بش. بهش دسترسی دادم.
روش که دابل کلیک میکنم دستور اجرا میشه.
توی کرون معمولی هم که با echo میذارم اجرا میشه.
ولی توی کرون ریشه به هیچ طریقی اجرا نمیشه. sudo میذارم نمیشه. نمیذارم بازم نمیشه. echo هم میدم بازم نمیشه. کلا توی کرون ریشه هر کار کردم اجرا نشد. در صورتی که توی کرون معمولی با echo اجرا شد. ](*,)
این کرون ریشه خیلی ناز می کنه نمی دونم چرا >:(
-
ای بابا اینم که نمیشه.
من یه دستور گذاشتم توی فایل بش. بهش دسترسی دادم.
روش که دابل کلیک میکنم دستور اجرا میشه.
توی کرون معمولی هم که با echo میذارم اجرا میشه.
ولی توی کرون ریشه به هیچ طریقی اجرا نمیشه. sudo میذارم نمیشه. نمیذارم بازم نمیشه. echo هم میدم بازم نمیشه. کلا توی کرون ریشه هر کار کردم اجرا نشد. در صورتی که توی کرون معمولی با echo اجرا شد. ](*,)
این کرون ریشه خیلی ناز می کنه نمی دونم چرا >:(
به چه شکلی تو کرون ریشه میزاری اینجا بزار
-
kubuntu@Rasubuntu:~$ sudo crontab -e
............#
# For more information see the manual pages of crontab(5) and cron(8)
#
# m h dom mon dow command
00 02 * * * bash ~/Dialogshutdown
01 02 * * * sudo bash ~/Dialogshutdown
03 02 * * * sudo -u kubuntu bash ~/Dialogshutdown
-
کاربر kubuntu به root/Dialogshutdown/ دسترسی نداره، در نتیجه اصلا اجرا نمیشه. توی دستوراتتون از ~ استفاده نکنید، همچنین فایل مورد نظر اگر قرار هست که با یک کاربر دیگه اجرا بشه، توی Home همون کاربر بذاریدش.
-
کاربر kubuntu به root/Dialogshutdown/ دسترسی نداره، در نتیجه اصلا اجرا نمیشه. توی دستوراتتون از ~ استفاده نکنید، همچنین فایل مورد نظر اگر قرار هست که با یک کاربر دیگه اجرا بشه، توی Home همون کاربر بذاریدش.
یعنی باید به این صورت
03 02 * * * sudo -u kubuntu bash home/kubuntu/Dialogshutdown
بذارم؟؟ یا کلا روش دیگه ای؟؟ یعنی میگین این ~/Dialogshutdown توی روت هست؟؟ آخه من اینو توی صفحه ی اول هومم گذاشتم. چون توی کرون معمولی همین جوری دستور میدادم، برای روت هم همین جوری دادم. گفتم خب فایلم که از سر جاش جا به جا نشده. ;)
-
آهان.
مرسی. تست کردم این دفعه جواب داد. برم ببینم بقیه هم جواب میدن یا نه ;)
-
03 02 * * * sudo -u kubuntu bash /home/kubuntu/Dialogshutdown
-
دستور
export DISPLAY=:0.0
توی کرون ریشه اجرا نمیشه. اینو هم با sudo تست کردم، هم با sudo -u kubuntu
اینم کد اصلیش
56 16 * * * export DISPLAY=:0.0; /usr/bin/zenity --info --text="Check kon cron eto Yaro!"
برای دستور shutdown -h now دیگه نیاز به sudo نیست. درسته؟؟
برای pm-suspend هم نیاز به sudo نیست. درسته؟
بعد چرا وقتی از روش sudo -u userاستفاده می کنم، پنجره ها مثل ویندوز 98 میشه؟؟ ;D
-
DISPLAY=:0.0 /usr/bin/zenity --info --text="Check kon cron eto Yaro!"
-
DISPLAY=:0.0 /usr/bin/zenity --info --text="Check kon cron eto Yaro!"
مرسی ;)
مشکل از این ; بود؟؟ خب چرا توی کرون کاربر، مشکلی نداره؟
در مورد تم ویندوز98 هم نگفتین :D
خیلی وقتا دیدم که استایل برنامه ها عین گنوم2 میشه. مثلا جی پارتد یا سامبا و ... چرا؟