第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

cron 調(diào)用 bash 腳本,該腳本調(diào)用“腳本”來運(yùn)行 python 程序。

cron 調(diào)用 bash 腳本,該腳本調(diào)用“腳本”來運(yùn)行 python 程序。

茅侃侃 2023-06-13 09:58:27
當(dāng)我通過 cron 運(yùn)行以下 bash 腳本時(shí),最后一行在前一行完成之前運(yùn)行。為什么?我怎樣才能執(zhí)行我想要的命令?我確信這cron是罪魁禍?zhǔn)?,但為了爭論,這里有一個(gè)虛擬的bash 腳本 (顯然,這只是一個(gè)例子。在現(xiàn)實(shí)世界中,我正在 python 程序中做一些工作,然后嘗試完成后將其工作產(chǎn)品復(fù)制到另一個(gè)地方。):#!/usr/bin/env bashcd /tmp/kier/scriptscript output -c "./sleeper.py; echo '...and we are done'"echo "This is the next line after invoking script..."...為了完整起見,這里是python 腳本,sleeper.py:#!/usr/bin/env python3import timeprint("python program starting")time.sleep(5)print("python program done")當(dāng)我從命令行運(yùn)行 bash 腳本時(shí),一切都很好。具體來說,“This is the next line...”文本在 5 秒睡眠后的最后打印。但是當(dāng)我從 cron 運(yùn)行它時(shí),輸出順序錯(cuò)誤(這是 cron 運(yùn)行作業(yè)后發(fā)給我的電子郵件):Script started, file is outputScript done, file is outputThis is the next line after invoking script...python program startingpython program done...and we are doneScript started, file is output所以你可以看到“這是下一行......”在 python 腳本真正啟動(dòng)之前打印出來。就好像它在后臺(tái)運(yùn)行 python 腳本一樣。我很難過。為什么會(huì)發(fā)生這種情況,如何讓echo命令等到scriptpython 程序運(yùn)行完畢?(最后,是的,我可以在發(fā)送到的命令中包含我的額外命令script,我實(shí)際上正在考慮這一點(diǎn)。但是來吧!這太瘋狂了!)
查看完整描述

1 回答

?
小怪獸愛吃肉

TA貢獻(xiàn)1852條經(jīng)驗(yàn) 獲得超1個(gè)贊

我應(yīng)該跟進(jìn)并分享我想出的解決方案。最后,我從來沒有很好地回答為什么它在我的(RedHat)環(huán)境中以這種方式表現(xiàn),所以我決定采用一種解決方法。我...

  • 在調(diào)用“腳本”之前創(chuàng)建了一個(gè)哨兵文件,

  • 在腳本的命令文本中包含一個(gè)額外的命令,用于刪除哨兵文件,然后

  • 在繼續(xù)之前等待哨兵文件消失。

像這樣:

sentinel=`mktemp`

script output -c "./sleeper.py; rm $sentinel"

while [ -f $sentinel ]

do

    sleep 3

done

是的,這是一個(gè) hack,但我需要繼續(xù)前進(jìn)。


查看完整回答
反對(duì) 回復(fù) 2023-06-13
  • 1 回答
  • 0 關(guān)注
  • 138 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)