Windows system >> Windowsの知識 >  >> Linuxシステムチュートリアル >> LinuxシステムFAQ >> Linuxでの通常の実行スクリプトの設定

Linuxでの通常の実行スクリプトの設定

  

以下は、非ubuntu環境用です。この記事の最後に、ubuntuとの違いのいくつかを紹介します。

Linuxでは、いくつかの機能を実装するために定期的にいくつかのスクリプトを実行する必要があります。

Linuxでは、crontabを使って通常の実行スクリプトの機能を実装しています。そして私が遭遇したいくつかの問題
I. crontabを使うための指示

1. crondはlinuxが定期的にプログラムを実行するのに使うコマンドです。このタスクスケジューリングコマンドは、オペレーティングシステムのインストール時にデフォルトで開始されます。 crondコマンドは、実行される作業について毎分定期的にチェックし、実行される作業がある場合は自動的に実行されます。 Linuxタスクスケジューリングのタスクは、主に次の2つのカテゴリに分類されます。

a。ガベージクリーンアップなどのシステム実行作業、バックアップ

b。5分ごとなどのユーザー定義作業スクリプト

2. crontabは、UNIXシステムで実行される定期的なタスクのトリガーです。ユーザーはこのファイルの下に定期的に実行されるタスクを記録してから、crondは定期的に定期実行リストをチェックし、実行される作業があるときにそれを自動的に実行します。

次の情報はman crontabで見ることができます。

a。/etc/crond.allowは、crontabの使用を許可されているユーザーのリストを示します。

b。/etc /crond .denyは、crontabの使用が許可されていないユーザーのリストを示します。

3. crontabで一般的に使用されるいくつかのコマンドフォーマット

crontab -l //ユーザーのcrontabファイルの内容を表示します。

crontab -e //ユーザーのcrontabファイルの内容を編集します。

crontab -r //ユーザーのcrontabファイルを削除します。

4. crontabファイルの基本フォーマットは次のとおりです。 > * * * * *コマンド

時刻の曜日と週の順序

各列は意味を意味します。

a。最初の*は1から59分までの分を表します。デフォルトの*は毎分実行されることを、xyは毎分実行されることを意味し、* /nはn分ごとに実行されることを意味し、x、y、zはx、y、z分が実行されることを意味します。 。

b。2番目の*は1〜23時間を示し、デフォルトの*は1時間ごとに実行されることを示し、xyはx〜yが1時間ごとに実行されることを示し、* /nはすべての時間を示します。 1時間に1回実行します。x、y、zは、x、y、z時間が実行されることを意味します。

c。3番目の*は1日から31日までを表し、デフォルトの*は毎日実行されることを表し、xyはx〜yが毎日実行されることを表し、* /nはn日ごとに実行されることを表します。一度、x、y、およびzは、x、y、およびz日を表します。

d。4番目の*は1から12の月を表し、デフォルトの*は各月が実行されることを表し、xyはxからyが毎月実行されることを表し、* /nはそれぞれの月を表します。 n分に1回実行します。x、y、zは、x、y、z日が実行されることを意味します。

e。5番目の*は0から6週(0は日曜日)、デフォルトの月曜日から日曜日、x-yは毎週のxからyを意味します。

5. crontabファイルのいくつかの例

a。30 21 * * * /usr/local/etc/rc.d/lighttpd restart //は毎日21:30にApacheを再起動することを意味します

b。45 4 1,10,22 * * /usr/local/etc/rc.d/lighttpd restart //毎月1,10,22、4:45がApacheを再起動することを示します。

c。0,30 18-23 * * * /usr/local/etc/rc.d/lighttpd restart //毎日18:00〜23:00の間、30分ごとにApacheをリセットします。

d * * /1 * * /usr/local/etc/rc.d/lighttpd restart //1時間ごとにApacheを再起動することを意味します。

e。* /5 * * * * /usr /local /etc /rc.d/lighttpd restart //5分ごとにApacheをリセットします

II。具体例

1.最初に/home /chenguolin /tmp /に/sという名前のシェルスクリプトを作成します。 .shスクリプト内のパスは絶対パスを使用していることに注意してください。

このスクリプトの機能は、現在の日付出力を現在のディレクトリのoutファイルにリダイレクトすることです。

2.次に、このスクリプトを2分ごとに実行するように設定します。> /dev /null 2>& 1これは、タスクが実行されるたびにシステムからユーザーに電子メールが送信されるためで、この情報を使用して情報を/dev /nullにリダイレクトできます/dev /nullファイルはごみ箱に似ています。 。

* /2 * * * * sh /home/chenguolin/tmp/s.sh> /dev /null 2> 1< 1< 1> 1< p> 2分後にnが見つかりました。出力ファイルにはまったく出力がありません。

3. Google /Baiduが結果を得られなかった後、私の同僚に尋ねたところ、crontabはユーザーのホームディレクトリにある2つのファイル、.bashrcと.bash_profileを実行する方法がない場合があるからです。 >

これら2つのファイルには以下の関数があります。

.bashrcはあなたのbashシェルのbash情報です。ログイン時や新しいシェルを開くたびに読み込まれます。 Br>

.bash_profileの役割は、各ユーザがこのファイルを使用して自分の使用に固有のシェル情報を入力できることです。ユーザがログインすると、ファイルは1回しか実行されません。デフォルトでは、彼はユーザーの.bashrcファイルを実行するためのいくつかの環境変数を設定します。そのため、手動でsource /home/chenguolin/.bashrc& source /home /chenguolin /をcrontabファイルに追加する必要があります。 .bash_profile

sourceの役割は現在のbash環境でコマンドを実行することですが、スクリプトはコマンドを実行するためにサブシェルを起動することです。このように、スクリプトに環境変数(またはエイリアスなど)を設定するためのコマンドを記述した場合、それはサブシェルにのみ影響し、現在のBASHを変更することはできないため、ファイル(コマンド列)から環境変数を設定するときはsourceコマンドを使用します。

したがって、crontabファイルは

* /2 * * * * source& /home/chenguolin/.bashrc& source /home/chenguolin/.bash_profile&になります。;& sh /home/chenguolin/tmp/s.sh> /dev /null 2>& 1

4.スクリプトは定期的に実行できることがわかりました。

うまくいかない場合は、ログを調べることで確認できます。 ubuntu以外のLinuxのcrondログファイルは/var /logに保存されます。

III。crontabを使用してubuntuの下でスクリプトを実行する

1以下の質問に注意してください。 ubuntuのcrontabサービスプログラムはcronであり、デフォルトのcronサービスログは利用できません。手動で開く必要があります。

a。sudo vim /etc/rsyslog.d/50-default.conf

b。cron。*行を見つけてコメントを削除します。

c。その後、cronサービスを再起動します。sudo service cron restart

d。これにより、/var /logにcronログが記録されます。ファイルは、ログファイルを見ることで問題を見つけることができます。

2. ubuntuの下では、ユーザーのホームディレクトリに.bash_profileファイルはありません。そして、.bashrcファイルが自動的に実行されます。

* /2 * * * * sh /home/chenguolin/tmp/s.sh> /dev /null 2> 1

Copyright © Windowsの知識 All Rights Reserved