日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

linux 创建crontab文件位置,linux - 如何通过脚本创建crontab - Ubuntu问答

發(fā)布時間:2025/3/21 linux 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 linux 创建crontab文件位置,linux - 如何通过脚本创建crontab - Ubuntu问答 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

問題描述

我需要通過運行設置服務器的腳本來添加cron作業(yè)。我目前正在使用Ubuntu。我可以使用crontab -e,但這將打開一個編輯器來編輯當前的crontab。我想以編程方式執(zhí)行此操作。

有可能這樣做嗎?

最佳回答

Cron作業(yè)通常存儲在/var/spool/cron下的per-user文件中

您要做的最簡單的事情可能就是創(chuàng)建一個配置了作業(yè)的文本文件,然后將其復制到cron spool文件夾中,并確保它具有正確的權限(600)。

次佳回答

這是一個one-liner,它不使用/不需要將新作業(yè)存儲在文件中:

(crontab -l 2>/dev/null; echo "*/5 * * * * /path/to/job -with args") | crontab -

2>/dev/null很重要,因此如果當前沒有crontab條目,您將不會收到某些* nix生成的no crontab for username消息。

第三種回答

對于用戶crontabs(包括root),您可以執(zhí)行以下操作:

crontab -l -u user | cat - filename | crontab -u user -

其中名為”filename”的文件包含要追加的項目。您也可以使用sed或其他工具代替cat進行文本操作。您應該使用crontab命令,而不是直接修改文件。

類似的操作將是:

{ crontab -l -u user; echo 'crontab spec'; } | crontab -u user -

如果要修改或創(chuàng)建系統(tǒng)crontab,則可以像處理普通文本文件一樣對它們進行操作。它們存儲在/etc/cron.d,/etc/cron.hourly,/etc/cron.daily,/etc/cron.weekly,/etc/cron.monthly目錄以及文件/etc/crontab和/etc/anacrontab中。

第四種回答

在Ubuntu和許多其他發(fā)行版中,您可以將文件放入/etc/cron.d目錄,其中包含帶有有效crontab條目的一行。無需在現(xiàn)有文件中添加一行。

如果您只需要日常運行,只需將文件放入/etc/cron.daily即可。同樣,您也可以將文件拖放到/etc/cron.hourly,/etc/cron.monthly和/etc/cron.weekly中。

第五種回答

Crontab文件只是文本文件,因此可以像其他任何文本文件一樣對待。 crontab命令的目的是使crontab文件的編輯更加安全。通過此命令編輯后,將檢查文件是否有錯誤,并且僅在沒有文件的情況下保存文件。

crontab [path to file]可用于指定存儲在文件中的crontab。像crontab -e一樣,這只會在無錯誤的情況下安裝文件。

因此,腳本可以直接寫入cron選項卡文件,也可以將它們寫入臨時文件并使用crontab [path to temp file]命令加載它們。直接寫可以省去寫臨時文件的麻煩,但同時也避免了安全檢查。

第六種回答

對于您的問題,更簡單的答案是:

echo "0 1 * * * /root/test.sh" | tee -a /var/spool/cron/root

您可以在遠程服務器上設置cronjobs,如下所示:

#!/bin/bash

servers="srv1 srv2 srv3 srv4 srv5"

for i in $servers

do

echo "0 1 * * * /root/test.sh" | ssh $i " tee -a /var/spool/cron/root"

done

在Linux中,crontab文件的默認位置是/var/spool/cron/。在這里您可以找到所有用戶的crontab文件。您只需要將cronjob條目附加到相應用戶的文件即可。在上面的示例中,root用戶的crontab文件被追加了cronjob,以每天凌晨1點運行/root/test.sh。

第七種回答

作為對建議crontab -l | crontab -的建議的更正:并非在所有系統(tǒng)上都有效。例如,我不得不在數(shù)十臺運行舊版本SUSE的服務器上的根crontab中添加作業(yè)(不要問為什么)。舊的SUSE在crontab -l的輸出前加上注釋行,從而使crontab -l | crontab -不等冪(Debian在crontab聯(lián)機幫助頁中識別了此問題,并對其Vixie Cron版本進行了修補,以更改crontab -l的默認行為)。

要在crontab -l添加注釋的系統(tǒng)上以編程方式編輯crontab,可以嘗試以下操作:

EDITOR=cat crontab -e > old_crontab; cat old_crontab new_job | crontab -

EDITOR=cat告訴crontab使用cat作為編輯器(不是通常的默認vi),該編輯器不會更改文件,而是將其復制到stdout。如果crontab -期望輸入的格式與crontab -e輸出的格式不同,這可能仍然會失敗。不要嘗試將最終的crontab -替換為crontab -e-這將無法工作。

第八種回答

(我沒有足夠的聲譽來發(fā)表評論,所以我在這里添加一個答案:隨時在他的答案旁邊添加它作為評論)

Joe Casadonte’s one-liner非常完美,除非您使用set -e運行,即您的腳本設置為因錯誤而失敗,并且尚無cronjob。在這種情況下,one-liner將不會創(chuàng)建cronjob,但不會停止腳本。無聲的失敗可能會引起很大的誤導。

原因是crontab -l返回帶有1返回碼,導致不執(zhí)行后續(xù)命令(echo)…因此未創(chuàng)建cronjob。但是由于它們是作為子進程執(zhí)行的(由于括號),因此它們不會停止腳本。

(有趣的是,如果再次運行相同的命令,它將起作用:一旦執(zhí)行了crontab -,crontab -l仍然不輸出任何內容,但不再返回錯誤(不再收到no crontab for 消息)。)隨后的echo被執(zhí)行并創(chuàng)建了crontab)

無論如何,如果使用set -e運行,則該行必須為:

(crontab -l 2>/dev/null || true; echo "*/5 * * * * /path/to/job -with args") | crontab -

第九種回答

那么/etc/crontab只是一個ascii文件,所以最簡單的就是

echo "*/15 * * * * root date" >> /etc/crontab

每15分鐘就會發(fā)送一封電子郵件給您。調整口味,并通過grep或其他方式進行測試,是否已添加該行以使您的腳本具有冪等性。

在Ubuntu等上,您還可以將文件拖放到/etc/cron.*中,這更易于執(zhí)行和測試—而且您不會弄亂/etc/crontab之類的(系統(tǒng))配置文件。

參考資料

總結

以上是生活随笔為你收集整理的linux 创建crontab文件位置,linux - 如何通过脚本创建crontab - Ubuntu问答的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。