簡體   English   中英

Linux Cronjob 未運行 powershell 腳本,但該腳本能夠在終端中運行

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM