crontabでシェルスクリプトをスケジュールしたが実行されておらず、crontabで使用しているのと同じコマンドを手動で実行しようとすると、次のエラーが表示されます。
nohup ./home/rahul/data_script/data_backup_scripts/data_backup.sh /home/rahul/data_script/data_backup_scripts/data.param > /home/rahul/data_script/data_backup_scripts/log/nohup.$(date --iso).out
nohup: ignoring input and redirecting stderr to stdout
nohup: failed to run command ‘./home/rahul/data_script/data_backup_scripts/database_backup.sh’: No such file or directory
しかし、正常に実行されているcrontabを介してスケジュールされた他のジョブがあり、以下のようにジョブをトリガーしています。
nohup sh /home/rahul/ddl_script/ddl_backup/ddl_backup.sh /home/rahul/ddl_script/ddl_scripts/data.param > /home/rahul/ddl_script/ddl_scripts/log/nohup.$(date --iso).out
この問題を解決するのに役立ちます。この場所でlsを実行すると、この場所にあるスクリプトが表示され、フォルダとサブフォルダにも777の権限があります。
/home/rahul/data_script/data_backup_scripts/database_backup.sh
答え1
まず、./home からドットを削除する必要があります。
/home/rahul/data_script/data_backup_scripts/data_backup.sh
これは物理フォルダを参照するために使用されますが、フルパスで操作を実行するときに物理フォルダの下にサブマスターフォルダ構造がない場合は必要ありません。
リダイレクトに関して実際の文を呼び出して実行するスクリプトを作成することをお勧めします。 cron内でリダイレクトを行いましたが、追跡してテストするのは困難です。したがって、機能をカプセル化して個別にテストするスクリプトを作成し、cronから呼び出します。
最後に、nohupの使用に関してはサービスによって実行されるため、cronでは使用する必要がないため、実行中にログアウトする方法はありません。
答え2
nohupコマンドは次のようにする必要があります。
nohup /home/rahul/data_script/data_backup_scripts/data_backup.sh /home/rahul/data_script/data_backup_scripts/data.param > /home/rahul/data_script/data_backup_scripts/log/nohup.$(date --iso).out &
「.」をクリックして正常に実行するには、ルートディレクトリ「/」にする必要があります。また、nohup はバックグラウンドでコマンドを実行しない限りあまり意味がないため、最後に「&」と表示されます。
答え3
/homeの前の点が間違っています。削除してください。
リダイレクトを変更したので、フィルタリングなど、より柔軟にロギングを管理できるように、より短いcrontabファイルを許可する中間スクリプトを使用することを検討します。