問題
前期使用crontab定時執行bash shell腳本時,都經過在shell一開始生效環境變量來避免腳本執行失敗,本身經常使用的環境變量爲:shell
source /home/francis/.bash_profile
source /etc/profile
如今有倆疑問:
一、crontab是用哪一個用戶執行shell腳本
二、login主機時讀取環境變量的順序bash
解決
問題一 、crontab是用哪一個用戶執行shell腳本
每一個用戶均可以擁有本身的crontab,但只有root用戶能進行crontab的停啓。
該用戶是否能夠crontab能夠經過/etc/cron.deny與/etc/cron.allow 來進行管理。該用戶不可crontab狀況有:ide
/etc/cron.deny與/etc/cron.allow 文件都不存在(該狀況只能root用戶執行crontab)
/etc/cron.deny存在,用戶名在文件中
/etc/cron.allow存在,用戶名不在文件中
經過簡單bash shell腳本對crontab用戶進行驗證:(當前用戶francis)code
#!/bin/bashcrontab
echo whoami
> 絕對路徑/test/hi_out
echo $LANG >> 絕對路徑/test/hi_out
定時執行輸出結果爲:ci
francis
[空]
直接執行輸出結果爲:get
francis
zh_CN.GBK
能夠看出當前用戶的crontab定時是用當前用戶執行,只是沒讀取環境變量。it
login主機時讀取環境變量的順序
login讀取環境變量順序
能夠看出login模式下,crontab要生效的環境變量都會自動執行。class
做者:莫顯輝
連接:https://www.jianshu.com/p/203469d79a90
來源:簡書
著做權歸做者全部。商業轉載請聯繫做者得到受權,非商業轉載請註明出處。test