以下是我的job.sh文件
echo 'Job Started Running'
echo 'password' | sudo ./logstash -f /usr/share/logstash/bin/contact-index-logstash.conf
echo 'Job Ended'
下面是我的 sudo crontab -e
* * * * * bash ~/job.sh > ~/log.log 2>&1
以下是我的Cron身份
> service cron status ● cron.service - Regular background program
> processing daemon Loaded: loaded (/lib/systemd/system/cron.service;
> enabled; vendor preset: enabled) Active: active (running) since Thu
> 2017-11-09 22:09:03 IST; 1h 40min ago
> Docs: man:cron(8) Main PID: 869 (cron)
> Tasks: 1 Memory: 12.3M
> CPU: 1min 40.378s CGroup: /system.slice/cron.service
> └─869 /usr/sbin/cron -f
>
> Nov 09 23:42:01 akshay CRON[6264]: pam_unix(cron:session): session
>opened for user root by (uid=0) Nov 09 23:43:01 akshay CRON[6270]:
> pam_unix(cron:session): session opened for user root by (uid=0)
>Nov 09 23:43:01 akshay CRON[6271]: (root) CMD (bash ~/job.sh > ~/log.log
> 2>&1)
Nov 09 23:43:01 akshay CRON[6270]: pam_unix(cron:session):
> session closed for user root Nov 09 23:44:01 akshay CRON[6293]:
> pam_unix(cron:session): session opened for user root by (uid=0)
Nov 09
> 23:44:01 akshay CRON[6294]: (root) CMD (bash ~/job.sh > ~/log.log
> 2>&1)
当我直接在shell上执行sh文件时,它运行时没有任何错误,但在crontab下却无法正常工作。
遵循@steeldriver的评论中的建议,这里是应该的方式。
您的job.sh
文件(假设logstash
位于同一位置!):
echo 'Job Started Running'
./logstash -f /usr/share/logstash/bin/contact-index-logstash.conf
echo 'Job Ended'
您的根是crontab
:
* * * * * /home/username/job.sh > /home/username/log.log 2>&1
cron
sh
默认情况下会运行您的脚本,因此我删除了不必要的bash
子shell –如果您仍然需要它,只需再次添加它即可。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句