Cron
將 curl 標準輸出回顯到 crontab
這是我儲存在我的 Github 帳戶中的 crontab 模式:
source ~/.profile 0 0 * * * # More cron commands
作為練習,我嘗試將標準輸出數據通過管道傳輸
curl
到我的 crontab 中(我已將 Github 路徑更改為一般模式)。**1)**我嘗試使用一個簡單的管道:
curl https://raw.githubusercontent.com/user/repo/master/cronjobs | crontab
這失敗並出現錯誤:
“-”:0:糟糕的一分鐘
crontab 文件中的錯誤,無法安裝。
**2)**我嘗試使用heredoc:
curl https://raw.githubusercontent.com/user/repo/master/cronjobs | cat > crontab
這失敗並出現錯誤:
沒有進行任何修改
**3)**我嘗試將
curl
輸出回顯到crontab
.echo "curl $(https://raw.githubusercontent.com/user/repo/master/cronjobs)" | crontab
這失敗並出現錯誤:
% Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0...: command not found 100 505 100 505 0 0 804 0 --:--:-- --:--:-- --:--:-- 804 (23) Failed writing body
您可以看到我已經嘗試了三種不同的方法將數據從標準輸出發送到 crontab,但沒有任何效果。如果我想將它直接傳遞給 crontab 而不是
cron.d
文件,我還剩下什麼?
"-":0: bad minute errors in crontab file, can't install.
crontab
如果給出的文件/數據不是正確的 crontab 文件,則會出現此錯誤。(我認為那裡的數字是行號,但我不知道為什麼它有時會顯示為零。)手冊頁crontab(5)
說:crontab 中的活動行是環境設置或 cron 命令。環境設置的形式為:
name = value
等號 (=) 周圍的空格是可選的…cron 命令的格式類似於 V7 標準,具有許多向上兼容的擴展。每行有五個時間和日期欄位,後跟一個使用者名(如果這是系統 crontab 文件),然後是一個命令。
所以,大概,你輸入的東西不是其中任何一個。
還行吧:
$ crontab <<EOF SHELL=/bin/bash * * * * * echo foo EOF
這不是:
$ echo "foo" |crontab "-":1: bad minute errors in crontab file, can't install.
- 這不是 here-doc,只是一個帶有額外 cat 和重定向到文件的管道
crontab
。這不會執行名為crontab
.curl https://raw.githubusercontent.com/user/repo/master/cronjobs | cat > crontab
3)這應該給你一個來自shell的錯誤,你可能沒有一個名為
https://raw.githubusercontent.com/user/repo/master/cronjobs
.echo "curl $(https://raw.githubusercontent.com/user/repo/master/cronjobs)" | crontab