<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
	<channel>
		<title><![CDATA[Latest posts for the topic "Linux的crontab中週與日月不可同時並存"]]></title>
		<link>https://forum.andowson.com/posts/list/16.page</link>
		<description><![CDATA[Latest messages posted in the topic "Linux的crontab中週與日月不可同時並存"]]></description>
		<generator>JForum - http://www.jforum.net</generator>
			<item>
				<title>Linux的crontab中週與日月不可同時並存</title>
				<description><![CDATA[ 最近公司的一個網站要在6/19(一) 10:00才開放使用，同事請我在6/19 10:00時把網站目錄中的三個檔案置換過去，這樣子使用者就可以看到最後的頁面了。 
<br>
<br>
這個可以手動做，也可以透過系統排程來自動執行。由於當天10:00到底會不會因為忙別的事而忘記換版實在很難說，故我採取由系統自動排程來執行這件工作，萬一系統排程沒執行好，再手動作一次。 
<br>
<br>
於是我請同事先把三個檔案放在某個目錄下，然後我寫一支shell script來做copy的動作。假設這支shell script叫做deployfile.sh，內容大概就是這個樣子: 
<br>
[code=bash] 
<br>
#!/bin/bash 
<br>
cp -pf /home/user1/index.jsp /srv/webapps/www.mycompany.com/events/index.jsp 
<br>
cp -pf /home/user1/message.pdf /srv/webapps/www.mycompany.com/events/message.pdf 
<br>
cp -pf /home/user1/qa.pdf /srv/webapps/www.mycompany.com/events/qa.pdf 
<br>
[/code] 
<br>
<br>
透過下列指令我將這個shell script設定為可執行 
<br>
[code]chmod +x /root/admin/deployfile.sh[/code] 
<br>
接著我透過crontb -e方式設定這個排程，為了慎重起見，我特別加上最後的星期一選項，目的是希望這個排程就只會在6/19(一) 10:00只跑這一次 
<br>
[code] 
<br>
0 10 19 6 1 /root/admin/deployfile.sh &gt; /tmp/deployfile.log 2&gt;&amp;1 
<br>
[/code] 
<br>
<br>
然後我將deployfile.sh複製一份為deployfile_test.sh，將檔案要copy過去的目錄先換成/tmp， 實際透過cron排程跑一次，確認這個shell script的寫法是OK的。 
<br>
<br>
6/19那天10:00多果然我忙到忘了要去手動copy檔案，經詢問同事確認檔案已經更新了，不過他有再手動改過內容，我想說這個排程有鎖定只有剛好是6/19的星期一才會執行，就沒去把它取消。 
<br>
<br>
到了今天同事突然發現檔案內容怎麼又被覆寫回去舊版內容，這下可真是奇怪了，難道是那個排程又再跑一次嗎?經過檢查排程的輸出log檔/tmp/deployfile.log 
<br>
發現檔案時間變成了6/26 10:00，確認應該是排程又在6/19的下個週一的10:00跑了一次 
<br>
也就是說，[color=red]當在crontab設定同時指定日期跟星期時，crontab是用or來處理，只要日期或星期符合都執行 
<br>
[/color] 
<br>
根據鳥哥網站的說明 
<br>
http://linux.vbird.org/linux_basic/0430cron.php 
<br>
<br>
[quote]週與日月不可同時並存 
<br>
另一個需要注意的地方在於：『你可以分別以週或者是日月為單位作為循環，但你不可使用「幾月幾號且為星期幾」的模式工作』。 這個意思是說，你不可以這樣編寫一個工作排程： 
<br>
30 12 11 9 5 root echo "just test" &lt;==這是錯誤的寫法 
<br>
本來你以為九月十一號且為星期五才會進行這項工作，無奈的是，系統可能會判定每個星期五作一次，或每年的 9 月 11 號分別進行，如此一來與你當初的規劃就不一樣了～所以囉，得要注意這個地方！[/quote] 
<br>
<br>
不經一事不長一智，還好這次的問題及時被發現，同事趕緊把檔案再更新掉，我也把這次的經驗好好記錄下來，以免日後又不小心犯了這個錯誤。]]></description>
				<guid isPermaLink="true">https://forum.andowson.com/posts/preList/681/1393.page</guid>
				<link>https://forum.andowson.com/posts/preList/681/1393.page</link>
				<pubDate><![CDATA[Thu, 29 Jun 2017 16:26:54]]> GMT</pubDate>
				<author><![CDATA[ andowson]]></author>
			</item>
			<item>
				<title>Linux的crontab中週與日月不可同時並存</title>
				<description><![CDATA[ I think that is nice sir]]></description>
				<guid isPermaLink="true">https://forum.andowson.com/posts/preList/681/1522.page</guid>
				<link>https://forum.andowson.com/posts/preList/681/1522.page</link>
				<pubDate><![CDATA[Thu, 16 Jul 2020 05:13:43]]> GMT</pubDate>
				<author><![CDATA[ cerrykoman]]></author>
			</item>
	</channel>
</rss>