Juniper EX交换机。 Crontab工作

时间:2016-12-29 11:03:39

标签: cron csh

有人在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

也许您知道我还能做些什么才能正确运行?

1 个答案:

答案 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