crontab執(zhí)行失敗的原因及一些解決辦法
crontab介紹
crontab
是Linux和Unix-like系統(tǒng)中用于設置周期性被執(zhí)行的任務的工具。cron
是一個守護進程,可以定期檢查 crontab
文件,并執(zhí)行其中定義的命令。crontab
文件包含了指令,這些指令告訴 cron
何時運行哪些命令。crontab
的基本組成如下:
- • 分鐘(0 - 59)
- • 小時(0 - 23)
- • 日期(1 - 31)
- • 月份(1 - 12)
- • 星期幾(0 - 7,其中0和7都代表星期天)
一個典型的crontab
任務看起來像這樣:
*/5 * * * * /bin/echo 'Hello, World!' >> /tmp/cron_output.txt
這個例子中的任務每5分鐘執(zhí)行一次,運行 echo
命令輸出 "Hello, World!",并將其追加到 /tmp/cron_output.txt
文件中。
用戶可以通過 crontab -e
命令編輯自己的 crontab
文件。初次使用時會提示選擇編輯器,如 vi
、nano
等。保存并退出編輯器后,cron
會自動加載更改。crontab
還支持使用特定的時間表來執(zhí)行任務,例如:
- •
0 0 * * *
每天午夜執(zhí)行 - •
0 9 * * 1
每周一的早上9點執(zhí)行 - •
0 22 * * Fri
每周五晚上10點執(zhí)行
此外,crontab
還允許使用特殊字符來表示時間間隔,如: - •
*
表示任意值 - •
,
表示列出枚舉值 - •
-
表示范圍 - •
/
表示時間間隔
例如,*/2 * * * *
表示每兩分鐘執(zhí)行一次任務。
使用crontab
需要注意權限和安全性問題,確保僅運行必要的任務,并避免運行有潛在風險的命令。同時,crontab
的輸出默認會通過郵件發(fā)送給用戶,因此建議將輸出重定向到文件中,以免郵箱被大量日志信息填滿。
在ubuntu執(zhí)行時遇到的一些問題
1. 日志在哪[1]
linux/mac 下默認日志會在syslog里面。路徑:
路徑:/var/log/syslog 備份在/var/log/syslog.*
可以通過查看
grep CRON /var/log/syslog
2. source: not found[2]
crontab沒有執(zhí)行成功。一般我們會使用source ~/.bashrc來引入環(huán)境變量。但發(fā)現(xiàn)執(zhí)行錯誤:
source: not found
這是由于在ubuntu下,默認的sh不是bash而是dash。
可以使用下面的命令驗證:
$ ls -l /bin/sh
如果輸出是:
/bin/sh -> dash
說明使用的sh是dash。
接下來就是將默認的shell換成bash
$ sudo dpkg-reconfigure dash
選擇no就可以了。
可以再次使用驗證
$ ls -l /bin/sh /bin/sh -> bash
3. XXX: command not found[3]
python: command not found
scrapy: command not found
...
我們已經(jīng)成功source ~/.bashrc,但還是發(fā)現(xiàn)明明在.bashrc中配置了PATH的命令卻還是提示找不到。
這時候可以通過輸入完整命令路徑解決,如:
/home/cifangyiquan/miniconda3/bin/python main.py
但這不是問題的根本原因
這個是由于默認的~/.bashrc里,如果不是交互式,則不進行后面的操作,導致一般后面的配置沒有生效。需要修改一下.bashrc文件:
1 # ~/.bashrc: executed by bash(1) for non-login shells. 2 # see /usr/share/doc/bash/examples/startup-files (in the package bash-doc) 3 # for examples 4 5 # If not running interactively, don't do anything 6 case $- in 7 *i*) ;; 8 *) return;; 9 esac 10
修改方法也很簡單,注釋調第8行的return即可。
8 # *) return;;
到此這篇關于crontab執(zhí)行失敗的原因及一些解決辦法的文章就介紹到這了,更多相關crontab執(zhí)行失敗內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
Shell腳本中實現(xiàn)把輸入的密碼轉換為*(星號)的方法
這篇文章主要介紹了Shell腳本中實現(xiàn)把輸入的密碼轉換為*(星號)的方法,從而把密碼字符串隱藏起來,比較實用的一個功能,在做交互設計時非常有用哦,需要的朋友可以參考下2014-06-06putty實現(xiàn)自動登錄的方法(ssh和ssh2)
這篇文章主要介紹putty實現(xiàn)自動登錄的方法,需要的朋友可以參考下2013-02-02Shell腳本實現(xiàn)MySQL、Oracle、PostgreSQL數(shù)據(jù)庫備份
本文主要介紹了Shell腳本實現(xiàn)MySQL、Oracle、PostgreSQL數(shù)據(jù)庫備份,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2024-02-02