私のシステム管理者は、私のマシンにたくさんのcronジョブをセットアップしました。何時に何が予定されているかを正確に知りたい。どうすればそのリストを入手できますか?
私のシステム管理者は、私のマシンにたくさんのcronジョブをセットアップしました。何時に何が予定されているかを正確に知りたい。どうすればそのリストを入手できますか?
回答:
Linuxシステムのセットアップ方法に応じて、以下を確認できます。
/var/spool/cron/*
(ユーザーcrontab)/etc/crontab
(システム全体のcrontab)また、多くのディストリビューションには次のものがあります。
/etc/cron.d/*
これらの構成の構文は次と同じです /etc/crontab
/etc/cron.hourly
、/etc/cron.daily
、/etc/cron.weekly
、/etc/cron.monthly
これらは、ディレクトリ名ごとに毎時間、毎日、毎週、または毎月実行される実行可能ファイルを含む単なるディレクトリです。
その上で、あなたは仕事(check /var/spool/at/*
)、anacron(/etc/anacrontab
and /var/spool/anacron/*
)、そしておそらく私が忘れている他の仕事をすることができます。
/etc/cron.daily
。そのdaily
ファイルはどのように機能しますか?毎日のジョブは何時に実行されますか?私のマシンでは正午頃に実行されているようですが、代わりにシステム管理者にそれを真夜中に変更する方法を教えてください。
/etc/crontab
。たとえば、私のUbuntuシステムで25 6 * * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
は、午前6時25分を意味します。
cronie
デーモンはの設定を使用するものを処理します/etc/anacrontab
。
/var/cron
ます。
ほとんどのCrons(たとえば、Vixie-Cron -Debian / Ubuntuのデフォルト、Cronie-Fedoraのデフォルト、Solaris Cronなど)を使用すると、次の方法で現在のユーザーのスケジュール済みcronジョブのリストを取得できます。
$ crontab -l
または別のユーザーの場合
# crontab -l -u juser
すべてのユーザーのcrontabを取得するには、すべてのユーザーをループしてこのコマンドを呼び出します。
または、スプールファイルを検索できます。通常、それらはの下/var/spool/cron
に保存されます。たとえば、ディレクトリに続くvcronの場合
/var/spool/cron/crontabs
すべてのユーザーのすべての構成済みcrontabが含まれています-システム全体のcrontabを介してジョブを構成することもできるrootユーザーを除く
/etc/crontab
cronie(Fedoraの/ CentOSの上のデフォルト)、そこにある.d
だけでなく、システムのcronジョブのためのスタイルのconfigディレクトリには:
/etc/cron.d
(いつものように、.d
ディレクトリは異なるパッケージの一部である構成エントリの維持を簡素化します。)
便宜上、ほとんどのディストリビューションには、リンク/保存されたスクリプトが定期的に実行されるディレクトリも用意されています。例:
/etc/cron.daily
/etc/cron.hourly
/etc/cron.monthly
/etc/cron.weekly
これらのスクリプトのタイムリーな実行は、通常run-parts
、システムcrontabのエントリまたはanacronを介して管理されます。
とにsystemd(Fedoraの上など、CentOSの7、...)定期的なジョブの実行は、さらに介して設定することができ、タイマーユニット。有効なシステムタイマーは、次の方法で表示できます。
$ systemctl list-timers
ルートの横にあるユーザーは、タイマーが設定されている場所でユーザーsystemdインスタンスを実行している場合があることに注意してください。たとえば、Fedoraでは、デフォルトで、現在ログインしているユーザーごとにユーザーsystemdインスタンスが開始されます。これらは次の方法で認識できます。
$ ps aux | grep 'systemd[ ]--user'
これらのユーザータイマーは、次の方法でリストできます。
$ systemctl --user list-timers
list-timers
コマンドを発行する代わりに、タイマーユニットファイル(パターン*.timer
:)およびそれらへのシンボリックリンクを通常のシステムおよびユーザーのsystemd configディレクトリで検索することもできます。
$ find /usr/lib/systemd/ /etc/systemd -name '*.timer'
$ find /home '(' -path '/home/*/.local/share/systemd/user/*' \
-o -path '/home/*/.config/systemd/*' ')' \
-name '*.timer' 2> /dev/null
(通常のサービスユニットと同様に、正しいsystemd configディレクトリにシンボリックリンクを作成することにより、タイマーユニットが有効になります。)
こちらもご覧ください:
crontab -l -u root
(私が実行することについて知りたいcronジョブのためroot
)、それは私が使用する権限を持っていないと言います-u
。
root
ユーザー)で呼び出す必要があります。
cronie
FedoraおよびRHEL6に同梱されているように/etc/crontab
、を参照せず、代わりにを使用します/etc/anacrontab
。構成ファイルでこれらを参照していない実際の実装について誤解される可能性があります。(しかし、その後、私もどちらもダウン票しませんでした。...私はただ言っているだけです。)
指定されたユーザーのすべてのcronをリストします。
crontab -uユーザー名-l;
すべてのユーザーのすべてのcronをリストするには
スーパーユーザーとして実行します
#!/bin/bash
#List all cron jobs for all users
for user in `cat /etc/passwd | cut -d":" -f1`;
do
crontab -l -u $user;
done
root
か、apache
または何が、一つはすべき使用/etc/crontab
(ほとんどのディストリビューションでは、より良い)、または/etc/cron.d
と/etc/cron.[timeframe]
。