私たちはサーバー上にたくさんのcronジョブを持っており、それらを管理する方法を探しています。現在linuxを実行しているすべてのcronジョブを入手してください
多くの機能がカバーされていますが、まだ動作しているのは、現在実行中のすべてのcronジョブを一覧表示する方法です。
以下はの仕事の種類を行います。
class Cronjob{
static private function stringToArray($jobs = '') {
$array = explode("\n", trim($jobs)); // trim() gets rid of the last \r\n
foreach ($array as $key => $item) {
if ($item == '') {
unset($array[$key]);
}
}
return $array;
}
static public function getAllJobsRunning(){
$output = shell_exec("ps -ef | grep apache");
return self::stringToArray($output);
}
}
をしかし、これはより多くのタスクなどだけでなく、cronジョブを返し
apache 6018 6015 0 Sep12 ? 00:00:02 /usr/sbin/httpd -DFOREGROUND
apache 6022 6015 0 Sep12 ? 00:00:08 /usr/sbin/httpd -DFOREGROUND
apache 6023 6015 0 Sep12 ? 00:00:07 /usr/sbin/httpd -DFOREGROUND
apache 7022 6015 0 14:14 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
root 8544 8485 0 14:41 pts/1 00:00:00 su apache
apache 8545 8544 0 14:41 pts/1 00:00:00 bash
apache 8642 8640 0 14:43 ? 00:00:00 /bin/sh -c /usr/bin/php /path_to_file/something.php > /var/log/cronlog/dailylogs.log 2>&1
apache 8643 8642 0 14:43 ? 00:00:04 /usr/bin/php /path_to_file/something.php
apache 11132 15438 0 14:58 ? 00:00:00 sh -c ps -ef | grep apache
apache 11133 11132 0 14:58 ? 00:00:00 ps -ef
apache 11134 11132 0 14:58 ? 00:00:00 grep apache
apache 11454 6015 0 Sep12 ? 00:00:06 /usr/sbin/httpd -DFOREGROUND
apache 15438 6015 0 11:29 ? 00:00:02 /usr/sbin/httpd -DFOREGROUND
apache 17761 6015 0 11:51 ? 00:00:01 /usr/sbin/httpd -DFOREGROUND
apache 18274 6015 0 Sep13 ? 00:00:06 /usr/sbin/httpd -DFOREGROUND
root 18911 11790 0 12:04 pts/0 00:00:00 su apache
apache 18912 18911 0 12:04 pts/0 00:00:00 bash
apache 21863 6015 0 12:42 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
apache 24419 6015 0 Sep13 ? 00:00:02 /usr/sbin/httpd -DFOREGROUND
apache 24436 6015 0 Sep13 ? 00:00:02 /usr/sbin/httpd -DFOREGROUND
ながらにしか興味イム:
apache 8642 8640 0 14:43 ? 00:00:00 /bin/sh -c /usr/bin/php /path_to_file/something.php > /var/log/cronlog/dailylogs.log 2>&1
apache 8643 8642 0 14:43 ? 00:00:04 /usr/bin/php /path_to_file/something.php
今、私は、私が望む行を除外する正規表現を書くことができましたが、より簡単なやり方がないのだろうと思っています この。
のためのcrontabは '/パス/に/ cronsに固有のものが含まれているfile'思いなさい? '/ my path/to/crons'のように? – delboy1978uk
ええ、そうです。私は確かにその情報でそれを確認することができますが、私はcronjobsを返すだけのコマンドがないかと思います。たとえば、クロンジョブを実行するだけの別個のユーザーを作成して、そのユーザーのタスクを要求するとcronジョブが返されると思っていました。しかし、おそらく他にも優れたソリューションがありますか? –
いいえ、 'ps'はデーモン、cronジョブ、またはユーザーとして起動したかどうかを示すことなく、実行中のプロセスをリストします。あなたができることは、crontabから得た定義済みのcronジョブのリストと、実行中のプロセスを比較することです。 cronジョブ用に別のユーザーを使用することもできますが、異なるcronジョブに異なる権限を割り当てる柔軟性が失われます。 –