作者 主題: /etc/crontab 內 HOME 變數?  (閱讀 3981 次)

0 會員 與 1 訪客 正在閱讀本文。

apachectl

  • 憂鬱的高中生
  • ***
  • 文章數: 164
    • 檢視個人資料
/etc/crontab 內 HOME 變數?
« 於: 2008-04-25 15:45 »
請問在 /etc/crontab 裡有個 HOME=/ ,一直不清楚該變數是有何用途? 因我把它改為 HOME=/root ,排程還是可以正常執行,所以想請教大大,該變數是做什麼用的 ?

KKBruce

  • 懷疑的國中生
  • **
  • 文章數: 83
  • 性別: 男
    • 檢視個人資料
    • 傳家之寶
回覆: /etc/crontab 內 HOME 變數?
« 回覆 #1 於: 2008-04-25 16:11 »
google say:

HOME is the home directory that is used for cron. If unspecified, it will
default to the entry in the /etc/passwd file.
Blog:http://blog.kkbruce.net/

acty

  • 鑽研的研究生
  • *****
  • 文章數: 694
    • 檢視個人資料
    • UNIX 管理者的學習紀錄
回覆: /etc/crontab 內 HOME 變數?
« 回覆 #2 於: 2008-04-26 02:34 »
cron 裡面 HOME 的變數,會影響 process 預設執行的路徑

如果你設成 /root, 缺點是  如果 /root 是一個 mount point ,

萬一 /root 沒 mount 起來,cron 基本上是無法執行的

若是嚴重點,不小心被別人 unmount 或是 file system crash , 此時已經在執行的 process 會 fail 掉

所以有時候我們下一些指令,會刻意 cd 到 / 根目錄去,尤其是像是 mount , 或是重要的 AP 的啟動等等

就是怕萬一某個 mount point 掛了, process 有可能 fail 又砍不掉。
« 上次編輯: 2008-04-26 02:37 由 acty »
~~破窗計畫來囉~~~

學習與挑戰是我的樂趣... HIT!!
我知道的不多  但歡迎大家以起來討論

UNIX 管理者的學習紀錄 - http://actychen.wordpress.com

ohmygod

  • 活潑的大學生
  • ***
  • 文章數: 210
    • 檢視個人資料
回覆: /etc/crontab 內 HOME 變數?
« 回覆 #3 於: 2008-04-28 09:42 »
cron 裡面 HOME 的變數,會影響 process 預設執行的路徑

如果你設成 /root, 缺點是  如果 /root 是一個 mount point ,

萬一 /root 沒 mount 起來,cron 基本上是無法執行的

若是嚴重點,不小心被別人 unmount 或是 file system crash , 此時已經在執行的 process 會 fail 掉

所以有時候我們下一些指令,會刻意 cd 到 / 根目錄去,尤其是像是 mount , 或是重要的 AP 的啟動等等

就是怕萬一某個 mount point 掛了, process 有可能 fail 又砍不掉。

這說法有問題。基本上 HOME 是給 cron daemon 參考用的,如果 crontab 檔案裡未利用到 $HOME,那這個變數是不會影響正常運作的。

acty

  • 鑽研的研究生
  • *****
  • 文章數: 694
    • 檢視個人資料
    • UNIX 管理者的學習紀錄
回覆: /etc/crontab 內 HOME 變數?
« 回覆 #4 於: 2008-04-28 10:14 »
引用
這說法有問題。基本上 HOME 是給 cron daemon 參考用的,如果 crontab 檔案裡未利用到 $HOME,那這個變數是不會影響正常運作的。
我想你誤解我上面所說的話

我所說的內容僅在於 /etc/crontab 裡面  沒擴及到 script 裡面執行的程式

/etc/crontab 裡面放的排程不見得一定是 script 吧   也有可以直接執行的程式
可以執行的程式當然是受 $HOME 影響 
至於 script 裡面所用到的程式, 是否會不是會受這個變數影響,我不確定我沒仔細驗證過(留待有興趣的人驗證)
我只談 /etc/crontab 所影響的部份, 沒有談及到  script 裡面所執行的程式是否有受到影響

這程度上還是有差別的
« 上次編輯: 2008-04-28 10:24 由 acty »
~~破窗計畫來囉~~~

學習與挑戰是我的樂趣... HIT!!
我知道的不多  但歡迎大家以起來討論

UNIX 管理者的學習紀錄 - http://actychen.wordpress.com

ohmygod

  • 活潑的大學生
  • ***
  • 文章數: 210
    • 檢視個人資料
回覆: /etc/crontab 內 HOME 變數?
« 回覆 #5 於: 2008-04-28 11:22 »
你也誤會我講的意思了,我說的那段話從頭到尾都沒提到 scripts 啊。
如果能看一下 man page 裡有關 $HOME 的範例,就能體會我說的意思。

再來針對你的部分:
引用
cron 裡面 HOME 的變數,會影響 process 預設執行的路徑
如果你設成 /root, 缺點是  如果 /root 是一個 mount point ,
萬一 /root 沒 mount 起來,cron 基本上是無法執行的
現在可做個實驗,我把 /etc/crontab 裡的 HOME 設定成 /home: HOME=/home
而 /home 擁有獨立的 partition,現在把 /home umount :
# umount /home

然後在 /etc/crontab 裡設定一行:
* * * * * root cp -r /etc/sysconfig /tmp/bck

等一分鐘到了去看看有沒有成功執行此排程工作,答案是有,所以你說的這段話有沒有問題呢 ?


acty

  • 鑽研的研究生
  • *****
  • 文章數: 694
    • 檢視個人資料
    • UNIX 管理者的學習紀錄
回覆: /etc/crontab 內 HOME 變數?
« 回覆 #6 於: 2008-04-28 11:28 »
還是有點不同

你的 程式是執行前就已經把 /home umount 掉

我是說執行中耶.....

為了避免執行中 mount point 不見耶....

執行前就沒那個 mount point 這樣的測試有意義嗎
« 上次編輯: 2008-04-28 11:31 由 acty »
~~破窗計畫來囉~~~

學習與挑戰是我的樂趣... HIT!!
我知道的不多  但歡迎大家以起來討論

UNIX 管理者的學習紀錄 - http://actychen.wordpress.com

harrier

  • 榮譽博士
  • 俺是博士!
  • *****
  • 文章數: 1856
  • 性別: 男
    • 檢視個人資料
    • 國屬武裝兵
回覆: /etc/crontab 內 HOME 變數?
« 回覆 #7 於: 2008-04-28 11:58 »
cron 裡面 HOME 的變數,會影響 process 預設執行的路徑
如果你設成 /root, 缺點是  如果 /root 是一個 mount point ,
萬一 /root 沒 mount 起來,cron 基本上是無法執行的

題外話...
不記得第幾個版本,以前 RHL 安裝時允許 /root 單獨設置一個 mount point,
後來好像不允許了。
...90Net(90:1200/1203),GameNET(99:700/707),ALLNet(92:9200/3111),InfoNet(30:100/103)..MaximusCBCS(浮懷),AirNet,TenderNet,StormNet,FidoNet...
<<- www.nas.vg ->>

acty

  • 鑽研的研究生
  • *****
  • 文章數: 694
    • 檢視個人資料
    • UNIX 管理者的學習紀錄
回覆: /etc/crontab 內 HOME 變數?
« 回覆 #8 於: 2008-04-28 12:26 »
現在可做個實驗,我把 /etc/crontab 裡的 HOME 設定成 /home: HOME=/home
而 /home 擁有獨立的 partition,現在把 /home umount :
# umount /home

然後在 /etc/crontab 裡設定一行:
* * * * * root cp -r /etc/sysconfig /tmp/bck

等一分鐘到了去看看有沒有成功執行此排程工作,答案是有,所以你說的這段話有沒有問題呢 ?

home 已經 umount 了  表示之後寫到  /home 就是寫到 / 的 mount point , 對吧..
之後若到 /home 執行程式,  也不會有再被 umount 怎樣,  不是嗎?
« 上次編輯: 2008-04-29 10:17 由 acty »
~~破窗計畫來囉~~~

學習與挑戰是我的樂趣... HIT!!
我知道的不多  但歡迎大家以起來討論

UNIX 管理者的學習紀錄 - http://actychen.wordpress.com

apachectl

  • 憂鬱的高中生
  • ***
  • 文章數: 164
    • 檢視個人資料
回覆: /etc/crontab 內 HOME 變數?
« 回覆 #9 於: 2008-04-28 23:02 »
請問 acty 大大,我一直看不太懂您的意思,『cron 裡面 HOME 的變數,會影響 process 預設執行的路徑』,這意思是說我在 /etc/crontab 裡所設計排程中的程式在執行時會受到 HOME 的影響是嗎?它是個怎樣的影響呢 ? 能再說明一下嗎 ?因為剛剛做了個實驗,設定 HOME=/home,然後設計排程中跑個程式,當這程式在執行時,我嘗試將 /home umount,但卻失敗,所以的確會影響,但不知為何會這樣,這是怎樣的原理呢 ??

acty

  • 鑽研的研究生
  • *****
  • 文章數: 694
    • 檢視個人資料
    • UNIX 管理者的學習紀錄
回覆: /etc/crontab 內 HOME 變數?
« 回覆 #10 於: 2008-04-28 23:22 »
請問 acty 大大,我一直看不太懂您的意思,『cron 裡面 HOME 的變數,會影響 process 預設執行的路徑』,這意思是說我在 /etc/crontab 裡所設計排程中的程式在執行時會受到 HOME 的影響是嗎?它是個怎樣的影響呢 ? 能再說明一下嗎 ?因為剛剛做了個實驗,設定 HOME=/home,然後設計排程中跑個程式,當這程式在執行時,我嘗試將 /home umount,但卻失敗,所以的確會影響,但不知為何會這樣,這是怎樣的原理呢 ??
1. 程式執行中 -- 程式執行所用的 mount point 要存在 -- 若不存在 程式會掛掉 
    這一點  應該是沒有爭議吧

2. 不管你的排程放的是程式或是script ,他執行總會需要一個 目錄起始點吧
    如果設定 home=/ , 那就是在 / 執行
    但 script 裡面呼叫的程式  如上面所說  我沒去驗證過他會怎麼執行  我不知道

已經夠白話了  在簡單我就....不知道要怎麼寫了

順便一提  你可能沒愈過更慘的情形
假設你程式執行在 /, 同時執行過程中他會一直寫 log 到 /var, /var 是另外切出一個 mount point
結果 /var 不小心被 umount , 你猜會發生什麼情況
後來的 log 都寫到 / (因為 /var 被 umount , 所以寫到 / ) 然後 很快硬碟就爆掉了
~~破窗計畫來囉~~~

學習與挑戰是我的樂趣... HIT!!
我知道的不多  但歡迎大家以起來討論

UNIX 管理者的學習紀錄 - http://actychen.wordpress.com

apachectl

  • 憂鬱的高中生
  • ***
  • 文章數: 164
    • 檢視個人資料
回覆: /etc/crontab 內 HOME 變數?
« 回覆 #11 於: 2008-04-29 10:13 »
我終於搞懂了,哈哈哈,感謝大大。