PCDVD數位科技討論區

PCDVD數位科技討論區 (https://www.pcdvd.com.tw/index.php)
-   七嘴八舌異言堂 (https://www.pcdvd.com.tw/forumdisplay.php?f=12)
-   -   [請教] crontab 排程執行一個小型的shell script失敗 (https://www.pcdvd.com.tw/showthread.php?t=1039626)

goddesschi 2014-02-15 06:03 PM

[請教] crontab 排程執行一個小型的shell script失敗
 
我還是菜鳥中的菜鳥,請儘量鞭我<(_ _)>

我直接修改/etc/crontab,排程執行一個小型的shell script

引用:
*/3 * * * * root /home/goddesschi/test/bk.sh


格式沒有錯但是可能是有些限制
目前無論怎麼測shell script完全都不能運作
請問我下面的指令是不是有什麼問題呢
能不能請大家儘量給我點意見做參考,謝謝

引用:
#!/bin/sh

/etc/init.d/lighttpd stop

nice -n 19 mysqldump -u username -ppasswoed database1 | nice -n 19 gzip -9 > ~/test/$(date '+%Y.%m.%d-%H%M').sql.gz

nice -n 19 mysqldump -u username -ppasswoed --default-character-set=binary database1 | nice -n 19 gzip -9 > ~/test/$(date '+%Y.%m.%d-%H%M').sql.gz

nice -n 19 rar a -m0 -hpasswoed -rr5 -ep1 ~/test/$(date '+%Y.%m.%d-%H%M').www.rar /var/www/index.html.backup

nice -n 19 rar a -m0 -hpasswoed -rr5 -ep1 ~/test/$(date '+%Y.%m.%d-%H%M').mysql.rar /var/lib/mysql

nice -n 19 rar a -m0 -hpasswoed -rr5 -ep1 ~/test/$(date '+%Y.%m.%d-%H%M').other.rar /etc/rc.local

/etc/init.d/lighttpd start

上面的script如果單獨在treminal執行可以工作@@

crontab改成用bash調用script也不行

引用:
*/3 * * * * root bash /home/goddesschi/test/bk.sh


我試過如果單獨把某行指令拉出來給crontab吃看起來就沒問題

引用:
/etc/init.d/lighttpd stop


這個玩了好幾個小時原本以為是格式問題看來不是,最後還是沒什麼概念&結論 = =b

MOSWU 2014-02-15 06:16 PM

看一下/var/log/cron裡面有沒有不正常的東西

a843433 2014-02-15 06:19 PM

路徑..........


你的SCRIPT 裡面沒有導入路徑,你可以用絕對路徑,或者在一開始時引入。

goddesschi 2014-02-15 06:58 PM

引用:
作者a843433
路徑..........


你的SCRIPT 裡面沒有導入路徑,你可以用絕對路徑,或者在一開始時引入。

啊啊啊啊,這個的確是script的bug@@
我用的身分是root但是路徑不是指向root下的test資料夾
無論如何這個的確是問題,我吃完飯後來試試看 :jolin:

請問大家
如果說crontab的script中間的部分才有問題,那第一列會執行成功嗎?
因為目前lighttpd的stop(第一列)都沒成功過
很想知道如果是script中間失敗不知道會不會影響第一列的行為?

小川阿傻美 2014-02-15 07:00 PM

建立一個 bk.sh
內容如:
#!/bin/bash
touch /home/asami/Data1402/bashtest/$(date '+%Y.%m.%d-%H%M').txt

chmod +x bk.sh
讓它可以執行

crontab 內容如:
* * * * * /bin/bash /home/asami/Data1402/bashtest/bk.sh


後來就每分鐘執行囉
如:
$ ll
總計 4
-rw-r--r--. 1 asami asami 0 2014-02-15 19:00 2014.02.15-1900.txt
-rw-r--r--. 1 asami asami 0 2014-02-15 19:01 2014.02.15-1901.txt
-rw-r--r--. 1 asami asami 0 2014-02-15 19:02 2014.02.15-1902.txt
-rw-r--r--. 1 asami asami 0 2014-02-15 19:03 2014.02.15-1903.txt
-rwxrwxr-x. 1 asami asami 77 2014-02-15 18:51 bk.sh

你參考看看囉~~~ :like: :like:

goddesschi 2014-02-15 08:46 PM

謝謝大家,果然問題點是在絕對路徑上面我搞錯了
用~偷懶結果root身分執行時路徑跑到/root/下當然什麼都沒有就失敗了 = =

小川阿傻美兄
請問執行權限有修改的必要嗎?
因為我是直接crontab選擇root身分做執行腳本,是不是理論上是無敵的?

a843433 2014-02-15 08:49 PM

引用:
作者goddesschi
謝謝大家,果然問題點是在絕對路徑上面我搞錯了
用~偷懶結果root身分執行時路徑跑到/root/下當然什麼都沒有就失敗了 = =

小川阿傻美兄
請問執行權限有修改的必要嗎?
因為我是直接crontab選擇root身分做執行腳本,是不是理論上是無敵的?



最好是不要,這個會有資安的風險...

儘量是切割權限,讓其他不能登入的專門帳號去執行你那些維護與備份的動作比較好......


root...... 太敏感,被炸開之後你不容易發現自己已經被炸開。

goddesschi 2014-02-15 08:58 PM

引用:
作者a843433
最好是不要,這個會有資安的風險...

儘量是切割權限,讓其他不能登入的專門帳號去執行你那些維護與備份的動作比較好......


root...... 太敏感,被炸開之後你不容易發現自己已經被炸開。


因為script要針對initial script做關閉和啟用的動做所以非得(?)用root才能執行script :cry:
理論上(我猜)啦
要修改/etc/crontab需要root權限,所以我覺得我應該把script的owner丟給root這樣鎖的更嚴謹是不是比較好
root帳密如果都淪陷了也gg了 :D

anderson1127 2014-02-15 09:26 PM

請多愛用絕對路徑來設定crontab

主機如果是自己的,請不要任意給其它user account shell (除了自己的以外)
看起來樓主應該是使用linux OS的樣子 , 如果是 , shell 的授予更要嚴格控制!!
因為我曾經玩過exploit program , 一般user level 要弄到root 權限是很容易的事....
最近的expolit 就有點不順心就是了 , 成功率是0% .... :ase :ase :ase
還在等更好玩的exploit ... :(

PS: 請別來問我exploit的事.... :rolleyes:

小川阿傻美 2014-02-15 09:27 PM

MySQL Backup 可以參考一下用新的東西~~~:like: :like:

[YOUTUBE]EWnsRsE8wMg[/YOUTUBE]


所有的時間均為GMT +8。 現在的時間是06:30 PM.

vBulletin Version 3.0.1
powered_by_vbulletin 2025。