私のシステム管理者は私のマシンにたくさんのcronジョブをセットアップしました。何が何時に予定されているのかを正確に知りたい。どうすればそのリストを入手できますか?
Linuxシステムの設定方法に応じて、以下を確認できます。
/var/spool/cron/*
(ユーザーcrontabs)/etc/crontab
(システム全体のcrontab)また、多くのディストリビューションには以下があります:
/etc/cron.d/*
これらの構成の構文は/etc/crontab
と同じです。
/etc/cron.hourly
、/etc/cron.daily
、/etc/cron.weekly
、/etc/cron.monthly
これらは単に、ディレクトリ名ごとに1時間ごと、毎日、毎週、または毎月実行される実行可能ファイルを含むディレクトリです。
その上で、atジョブ(/var/spool/at/*
をチェック)、anacron(/etc/anacrontab
および/var/spool/anacron/*
)、そしておそらく私が忘れている他のものを使用できます。
ほとんどのクローン(例 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を介してジョブを構成することもできるrootユーザーを除いて、すべてのユーザーのすべての構成済みcrontabが含まれています
/etc/crontab
cronie (Fedora/CentOSのデフォルト)を使用すると、システムcronジョブ用の.d
スタイルの設定ディレクトリも存在します。
/etc/cron.d
(いつものように、.d
ディレクトリを使用すると、さまざまなパッケージの一部である構成エントリの管理が簡単になります。)
便宜上、ほとんどのディストリビューションには、リンク/保存されたスクリプトが定期的に実行されるディレクトリも用意されています。例:
/etc/cron.daily
/etc/cron.hourly
/etc/cron.monthly
/etc/cron.weekly
これらのスクリプトのタイムリーな実行は、通常、システムのcrontabのrun-parts
エントリまたは anacron を介して管理されます。
Systemd (例:Fedora、CentOS 7、...)を使用すると、定期的なジョブ実行を timer units でさらに構成できます。有効なシステムタイマーは、次の方法で表示できます。
$ systemctl list-timers
Root以外のユーザーは、タイマーが設定されているユーザーsystemdインスタンスも実行している可能性があることに注意してください。たとえば、Fedoraでは、デフォルトで、現在ログインしているユーザーごとにユーザーsystemdインスタンスが開始されます。これらは次の方法で認識できます。
$ ps aux | grep 'systemd[ ]--user'
これらのユーザータイマーは次の方法で一覧表示できます。
$ systemctl --user list-timers
list-timers
コマンドを発行する代わりに、タイマーユニットファイル(パターン:*.timer
)と、通常のシステムおよびユーザーのsystemd構成ディレクトリでそれらへのシンボリックリンクを検索することもできます。
$ 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ディレクトリにシンボリックリンクを作成することで有効になります。)
以下も参照してください。
特定のユーザーのすべての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