Bash
Bash 腳本在 root 中工作,但不在 crontab 中
我正在嘗試在 Linux 啟動時執行 bash 腳本,但它不起作用。我已經在 crontab 中嘗試了所有這些命令:
@reboot bash /home/user/mysqlamazon.sh @reboot sh /home/user/mysqlamazon.sh @reboot /home/user/mysqlamazon.sh @reboot sleep 60 && /home/user/mysqlamazon.sh
我在 crontab 上有另一個可以完美執行的命令:
@reboot pwsh file.ps1
我也試過這個命令:
@reboot pwsh file.ps1 && sh /home/user/mysqlamazon.sh
這些都不起作用!任何幫助,將不勝感激!
以下是 bash 腳本的內容:
while($true) do ./transfermysql.sh > file.txt bcp tablename in file.txt -S ***********.com,**** -U **** -P *********** -d ********* -c :> file.txt sleep 60 done
你沒有告訴我們這是如何失敗的,但我猜你沒有看到它被執行。
首先,您的腳本將永遠無法工作,因為
while($true)
它不是有效的 shell 語法。我假設你想要這樣的東西:true=1 while(($true)); do ... ; done
更常見的成語是:
while : ; do ... ; done
或(
true
是命令):while true; do ... ; done
這很可能是因為您在腳本中使用了相對路徑:
./transfermysql.sh > file.txt
將其替換為完整路徑:
/path/to/transfermysql.sh > /path/to/file.txt
接下來,我還懷疑它
bcp
不在 cron 的 PATH 中,所以也要使用它的完整路徑:/path/to/bcp tablename in file.txt -S ***********.com,**** -U **** -P *********** -d ********* -c
最後,我不知道你為什麼想要
:> file.txt
,因為你的第一個命令無論如何都會覆蓋它的內容,但如果你出於某種原因確實需要它,你也需要在那裡使用完整路徑> /path/to/file.txt
: