[英]Linux Cronjob not running powershell script, but the script is able to run in terminal
我有一個更新數據庫表的 PowerShell 腳本。 我想在 Cronjob 中設置它以每天運行。 但是它似乎在 cronjob 中不起作用。 目前我已將其設置為幾分鍾,這樣我就不必等待。
定時標簽:
* * * * * pswh -File "/home/administrator/PowerShellScripts/Update-Set-Table.ps1"
終端:
pswh -File "/home/administrator/PowerShellScripts/Update-Set-Table.ps1"
當我在終端中運行該命令時工作完美,但它似乎不是從 cronjob 運行的。
您需要指定可執行文件pwsh
的完整路徑。 您可以通過在終端中使用which APPNAME
來實現。
which pwsh
然后相應地更改 crontab 中的行。 對我來說,工作結果如下所示:
* * * * * /snap/bin/pswh -File "/home/administrator/PowerShellScripts/Update-Set-Table.ps1"
Cron 缺乏環境有這樣的副作用:工作目錄發生變化。 在我的情況下,我正在寫入一個我希望位於腳本目錄中的文件,該文件正在 $HOME 中創建並很好地寫入。
腳本的目錄保存在 PoSh 變量$PSScriptRoot
PoSh 在/usr/bin/pwsh
pwsh 有一個符號鏈接,所以不需要完整路徑(無論如何對我來說)
當前(Vixie)cron 允許可用於路徑的標准變量。 在man crontab
查看作者
如果你的腳本有一個#!/usr/bin/pwsh
shebang & 是可執行的,它會像任何腳本一樣執行而不指定 'pwsh'
順便說一句,如果您要顯示到屏幕上,例如對話框,則 cron 作業必須以env DISPLAY=:0
(或其他一些數字)開頭才能顯示。 例如env DISPLAY=:0 pwsh $ScriptHome/DiskFull-WereGoingToCrash.ps1 -display
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.