使用crontab 添加一个定时任务
* * * * /bin/bash -l -c ' ~/.script.sh'
这个脚本的作用是统计一些数据并生成报表文件.
这个脚本每分钟执行一次,但是实际操作中crontab并没有像预期的那样生成报表文件.
然而当我手动执行这个命令时 "~/.script.sh" 生成文件并退出.
有两个疑问:
1: 为什么crontab 没有执行我的脚本. 查看了crontab 日志(/var/log/crond)输出: May 5 20:36:01 localhost CROND[27260]: (ernest) CMD (/bin/bash -l -c '~/script.sh') 没有发现任何异常.
2: 会不会是我执行脚本的环境 不一样呢? 测试了一下 "* * * * * /bin/bash -l -c 'source ~/.bash_profile && ~/.script.sh'" 也不行.
各位大牛们有没有遇到和我一样的问题呢?
Menjalankan skrip secara manual berkuat kuasa dan crontab tidak berkuat kuasa. Sebab yang paling biasa ialah: Perintah dalam skrip anda tidak menggunakan laluan mutlak.
Cuba gunakan laluan mutlak kerana
~
akan ditafsir secara berbeza oleh pengguna yang berbeza.$HOME
Biasanya, tambahpada permulaan
script.sh
Jika anda mencipta arahan crontab dengan sudo crontab -e, maka pengguna pelaksana adalah root, dan ~ di sini juga akan dihuraikan sebagai /root Jika anda tidak menggunakan sudo, itu tidak mengapa.
Bolehkah ini masalah kebenaran fail?