目前,我正在使用云虛擬機來運行我的代碼,因此我被分配了一個位于不同時區的新虛擬機。我想在晚上 7:30(東部時間)運行一個運行 python 腳本的 bash 腳本。從這里我知道如何在特定時間運行 bash 腳本,例如echo "ls -l" | at 07:00. 從這里我知道如何獲取東部時間的當前時間,例如TZ=America/New_York date. 另外,從這里我知道如何只使用date %R.
我是一名Python編碼員,并盡我所能撰寫了一個 sudo 代碼,以顯示我作為 bash 腳本要完成的作業:
while true
do
Now=TZ=America/New_York date %R
if [Now -eq 7:30pm]
then
python3 myfile.py
done
uj5u.com熱心網友回復:
由于您已經知道如何設定at命令以在指定時間執行命令,以及如何將 EST 轉換為本地時間,您可以將它們組合起來:
echo "python3 myfile.py" | at $(date -d "19:30 EST" %R)
當您呼叫該at命令時,它總是警告“命令將使用 /bin/sh 執行”。僅當我們呼叫特定于 bash 的命令時才有意義,例如:
echo "shopt -s globstar; ls **" | at ..
這將失敗。
在我們的例子中,該命令python3 myfile.py將同時運行,
/bin/sh然后/bin/bash您不必擔心警告。
date -d STRING將 解釋STRING為日期/時間表示并以指定格式列印轉換后的日期/時間 %R。
如果要將輸出發送到檔案,可以說:
echo "python3 myfile.py > /path/to/a/file" | at $(date -d "19:30 EST" %R)
為了輸出到當前終端,首先用tty命令識別終端:
$ tty
=> /dev/pts/0
然后將輸出重定向到終端:
echo "python3 myfile.py > /dev/pts/0" | at $(date -d "19:30 EST" %R)
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/431390.html
