ユーザーuni-01に対して10分ごとにcrontabでtest.shスクリプトを実行しています
crontab -l
*/10 * * * * /bin/bash /home/uni-01/test.sh > /home/uni-01/data/_d.log 2>&1
ps -eF
コマンドを使用すると、test.shスクリプトは/bin/sh -c /bin/bash
で始まり、2番目は/bin/bash
コマンドで始まります。 /bin/sh -c /bin/bash
コマンドの実行を避ける方法
root 6007 946 0 12555 2932 1 09:42 ? 00:00:00 /usr/sbin/CRON -f
uni-01 6011 6007 0 1127 756 0 09:42 ? 00:00:00 /bin/sh -c /bin/bash /home/uni-01/test.sh > /home/uni-01/data/_d.log 2>&1
uni-01 6019 6011 0 3164 3088 1 09:42 ? 00:00:00 /bin/bash /home/uni-01/test.sh
Ubuntuリリースは16.04.1 LSです
#!/bin/bash
の先頭に Shebangtest.sh
を含めてみてください。
これにより、スクリプト自体の中からスクリプトのシェルとしてbashが設定され、crontab行で明示的に入力する必要がなくなります。
cronシェルの変更方法(shからbashへ)? で説明されているように、デフォルトのシェルをbash
に変更するには次のようにします。
Shell=/bin/bash
このコマンドは、あなたの場合、cron行の前のどこかに配置する必要があります。
Shell=/bin/bash
*/10 * * * * /home/uni-01/test.sh > /home/uni-01/data/_d.log 2>&1
言うまでもなく、これはその後のすべてのcron行に影響しますが、必要に応じてShell=/bin/sh
行で元に戻すことも、crontabの最後にbash
セクションを作成することもできます。