Crontab 使用指定用戶環境變量執行命令


不太理解為何中文技術博客搜不到這個問題的答案。。

其實 crontab 可以直接指定使用什么 shell 因為會用到 source 的關系所以我們可以先制定 shell 為 bash

SHELL=/bin/bash

既不需要自己去建 shell 腳本指定 #!/bin/sh 也不需要在要執行的命令前面加多余的參數。

 

但是也的確有個坑,我理解絕大多數同學要加載環境變量想法都跟我一樣會把環境變量存在 ~/.bashrc 中。然后在執行的時候會嘗試 source 該文件,比如

SHELL=/bin/bash
12
4 * * * source ~/.bashrc && cd /home/ubuntu/social-insights-magnus/ && xxxx

但是我發現,這樣是無法讀取到對應環境變量的。交互環境執行沒問題,但是使用 crontab 就是不行。這一點我看了一下沒弄太明白,但是我們可以新建文件 ~/.bash_profile 將環境變量放在這個里面申明。

然后重寫剛才的 crontab 任務

SHELL=/bin/bash
12
4 * * * source ~/.bash_profile && cd /home/ubuntu/social-insights-magnus/ && /opt/go/bin/go xxxx

即可。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM