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)
は有効なシェル構文ではないため、スクリプトは機能しません。私はあなたがこのようなものが欲しいと思います:
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
。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加