有人在juniper swith EX系列上使用过crontab吗?我想重新启动httpd作业,因为我需要使用不同的配置运行此过程。 我用日志创建了一些简单的脚本。
#!/bin/csh
echo 'Go...'
cp /jail/var/etc/httpd.conf_new /jail/var/etc/httpd.conf
echo 'changed'
set http_pid=`ps aux | grep 'httpd --config' | grep -v grep | awk '{print $2}'`
echo 'Process PID: ' "$http_pid"
kill -9 "$http_pid"
我也在crontab中创建了一份工作
10 12 * * * csh /var/root/test.sh >> test.log
当我从cmd运行进程时,输出为:
Go...
changed
Process PID: 3158
一切都很好但是当我从cron运行它时它看起来像那样:
Go...
changed
Process PID:
我尝试使用以下命令更改(添加)到crontab行:
SHELL=/bin/csh
PATH=...
但没有奏效。此外,我尝试将作业更改为以下内容:
10 12 * * * /var/root/.profile; csh /var/root/test.sh >> test.log
10 12 * * * sh /var/root/.profile; csh /var/root/test.sh >> test.log
10 12 * * * (sh /var/root/.profile; csh /var/root/test.sh) >> test.log
也许您知道我还能做些什么才能正确运行?
答案 0 :(得分:1)
我周末解决了这个问题。当脚本使用crontab
通过@reboot
运行时,脚本会在httpd
运行之前运行,因此没有PID。我在我的crontab行中放了一个sleep 60
,脚本延迟了60秒,当它运行时,httpd启动并运行并且有一个PID。
这是我的Crontab:
@reboot sleep 60; sh /jail/var/etc/httpd_replace_config.sh > /jail/var/etc/httpd_replace_config.txt