2013-10-10 166 views
1

我有一個在solaris服務器上運行的java服務。我需要殺死這個服務,並在指定的時間每晚重新啓動它。因此我設置了一個cron工作來做同樣的事情。當我通過命令行手動執行它時,我的腳本正常工作。但是當我將它設置爲cron作業時,它只執行一半的操作,即只殺死進程但不啓動進程。請幫助我。以下是詳細內容:shell腳本在手動執行時運行,但通過crontab執行一半

重新啓動腳本:

#!/bin/sh 
pkill -u peri java 2>> /dev/null 
sleep 3 
cd /opt/home/peri/utils/jsb 
. /opt/home/peri/utils/jsb/pjsb.new 
sleep 3 
cd /opt/jar 
MonitorExt.sh & > /dev/null 

這裏pkill的是殺害Java進程。腳本pjsb.new是用於啓動java進程的腳本。還有一個腳本MonitorExt.sh用於啓動另一個java進程。

任何幫助高度appreaciated !!!! 感謝下用戶「根」提前

+0

我對'Solaris'沒有任何經驗,但在'Ubuntu'上使用root密碼在腳本中運行sudo命令,例如:'sudo -n service mysqld stop | echo $ MY_PASSWORD' – alditis

回答

1

1),檢查是否在/ var/cron的一些cron的錯誤消息/日誌

2)通常,當命令/腳本在定時任務細手動但沒有運行,這是因爲某些環境變量未在cronjob上下文中設置。 所以你應該確保在默認shell($ HOME,$ JAVA,...)中自動設置的所有必需的環境變量實際上是在cron作業中運行時設置的

我通常會調用配置文件腳本在劇本或cronjob行內:
15 17 * * *。 $ HOME/.profile文件& & $ HOME/script.sh

3)你也應該更喜歡所有的腳本和命令的完整路徑:
在/ usr/bin中/ pkill的
/path/MonitorExt.sh
...