web-dev-qa-db-ja.com

cronスクリプトを実行してシェルスクリプトを実行する方法は?

私はcronジョブを設定していました:

20 * * * * /usr/bin/sh /home/lucky/myfile.sh

主な問題は、スケジュール時に「メールが/ var/spool/mail/luckyに送信されました」というエラーがあることです。

Myfile.shの内容は次のとおりです。

mkdir jh
cd jh 
44

これは、cronジョブとして設定されているスクリプトでは問題ありません。

mkdir jh
cd jh 

jhディレクトリを作成する必要がある場所にフルパスを指定する必要があります。また、このパスには、新しいファイル/ディレクトリを作成する権限が必要です。

たとえば、スクリプトは次のようになります。

#!/bin/sh

mkdir /home/lucky/jh
cd /home/lucky/jh

また、/usr/bin/shshの正しいパスではありません。正しいパスは/bin/shです。これはwhereis shコマンドで確認できます。それでも、cronジョブは次のようになります。

20 * * * * /home/lucky/myfile.sh

スクリプトを実行可能にすることを忘れないでください:

chmod +x /home/lucky/myfile.sh
59
Radu Rădeanu

これがフォルダを作成していると思われるパスは/です。これは、crontabが実行するすべてのファイルでフォルダーとファイルへのフルパスを必要とするためです。

したがって、myfile.shのパスは次のようになります。

mkdir <absolutePath>/jh

cd <absolutePath>/jh

20 * * * * /usr/bin/sh /home/lucky/myfile.shこの行は正しいですが、shが/ usr/bin/shに存在するかどうかを確認するためにパスを確認する必要があります(shが存在するパスを確認するにはwhich shを使用します。 )

Crontabの作成を急いでいる場合、このリンクにはかなり良い例があります

http://www.thegeekstuff.com/2009/06/15-practical-crontab-examples/

5
penguinRaider