procmailで始まったジョブはps-outputには表示されず、再起動後も停止できません。

procmailで始まったジョブはps-outputには表示されず、再起動後も停止できません。

テスト目的で.forwardファイルを介してprocmailを呼び出します。

|/usr/bin/procmail

.procmailrcの規則に従って、無限ループ「start」という操作を開始します。

while true
do
 date>>logfile
 sleep 300
done

驚くべきことに、このタスク(またはprocmailまたは.forwardに関連する他のタスク)は、ps -ef出力に別々のプロセス(自分自身または他人のプロセスではない)として表示されないため、殺すことはできません。 5分ごとにログにタイムスタンプを記録します。シェルスクリプトを削除しても機能しません。明らかに、すでにメモリにあるので、再読み込みする必要はありません。今は、少なくともタスクを再起動すると終了すると思いましたが、そうではありませんでした。出力を停止する唯一の方法は、ログファイルを誰もが書き込めないようにすることです。しかし、そのような場合でも、ジョブは引き続き実行されます(ファイルを再読み込みできるようにするときに確認します)。

今私の質問は:root以外のユーザーとしてこのスクリプトをどのように終了するのですか?またはまったくそうでない場合:私は何を間違えましたか? ps出力に表示され(もっと重要なことに)、私が殺すためにprocmailを介してスクリプトを呼び出すにはどうすればよいですか?

マシンへのルートアクセス権はありませんが、再起動できるように物理アクセス権があります。 OSはx86_64-suse-linuxのようです。 uname -a は Linux 3.11.10-7-default #1 SMP を表示します。私のシェルはbashです。

@Anthon:mailqは空のメールキューを表示します。 start、.procmailrc、および.forwardの名前を変更しても何も変わりません。

@EightBitTony:

nameofpc:~ > ps -ef
UID        PID  PPID  C STIME TTY          TIME CMD
root         1     0  0 Apr24 ?        00:00:13 /sbin/init showopts
root         2     0  0 Apr24 ?        00:00:00 [kthreadd]
root         3     2  0 Apr24 ?        00:00:00 [ksoftirqd/0]
root         5     2  0 Apr24 ?        00:00:00 [kworker/0:0H]
root         7     2  0 Apr24 ?        00:00:00 [migration/0]
root         8     2  0 Apr24 ?        00:00:00 [rcu_bh]
root         9     2  0 Apr24 ?        00:00:00 [rcuob/0]
root        10     2  0 Apr24 ?        00:00:00 [rcuob/1]
root        11     2  0 Apr24 ?        00:00:00 [rcuob/2]
root        12     2  0 Apr24 ?        00:00:00 [rcuob/3]
root        13     2  0 Apr24 ?        00:00:11 [rcu_sched]
root        14     2  0 Apr24 ?        00:00:07 [rcuos/0]
root        15     2  0 Apr24 ?        00:00:04 [rcuos/1]
root        16     2  0 Apr24 ?        00:00:04 [rcuos/2]
root        17     2  0 Apr24 ?        00:00:03 [rcuos/3]
root        18     2  0 Apr24 ?        00:00:01 [watchdog/0]
root        19     2  0 Apr24 ?        00:00:01 [watchdog/1]
root        20     2  0 Apr24 ?        00:00:00 [migration/1]
root        21     2  0 Apr24 ?        00:00:00 [ksoftirqd/1]
root        23     2  0 Apr24 ?        00:00:00 [kworker/1:0H]
root        24     2  0 Apr24 ?        00:00:01 [watchdog/2]
root        25     2  0 Apr24 ?        00:00:00 [migration/2]
root        26     2  0 Apr24 ?        00:00:00 [ksoftirqd/2]
root        28     2  0 Apr24 ?        00:00:00 [kworker/2:0H]
root        29     2  0 Apr24 ?        00:00:01 [watchdog/3]
root        30     2  0 Apr24 ?        00:00:00 [migration/3]
root        31     2  0 Apr24 ?        00:00:00 [ksoftirqd/3]
root        33     2  0 Apr24 ?        00:00:00 [kworker/3:0H]
root        34     2  0 Apr24 ?        00:00:00 [khelper]
root        35     2  0 Apr24 ?        00:00:00 [kdevtmpfs]
root        36     2  0 Apr24 ?        00:00:00 [netns]
root        37     2  0 Apr24 ?        00:00:00 [writeback]
root        38     2  0 Apr24 ?        00:00:00 [kintegrityd]
root        39     2  0 Apr24 ?        00:00:00 [bioset]
root        40     2  0 Apr24 ?        00:00:00 [kblockd]
root        41     2  0 Apr24 ?        00:00:00 [ata_sff]
root        42     2  0 Apr24 ?        00:00:00 [md]
root        44     2  0 Apr24 ?        00:00:00 [khungtaskd]
root        45     2  0 Apr24 ?        00:00:00 [kswapd0]
root        46     2  0 Apr24 ?        00:00:00 [ksmd]
root        47     2  0 Apr24 ?        00:00:01 [khugepaged]
root        48     2  0 Apr24 ?        00:00:00 [fsnotify_mark]
root        49     2  0 Apr24 ?        00:00:00 [crypto]
root        54     2  0 Apr24 ?        00:00:00 [kthrotld]
root        55     2  0 Apr24 ?        00:00:00 [scsi_eh_0]
root        56     2  0 Apr24 ?        00:00:00 [scsi_eh_1]
root        57     2  0 Apr24 ?        00:00:00 [scsi_eh_2]
root        58     2  0 Apr24 ?        00:00:00 [scsi_eh_3]
root        59     2  0 Apr24 ?        00:00:00 [scsi_eh_4]
root        60     2  0 Apr24 ?        00:00:00 [scsi_eh_5]
root        68     2  0 Apr24 ?        00:00:00 [kpsmoused]
root        72     2  0 Apr24 ?        00:00:01 [kworker/0:1H]
root        73     2  0 Apr24 ?        00:00:00 [deferwq]
root       114     2  0 Apr24 ?        00:00:00 [kmpath_rdacd]
root       141     2  0 Apr24 ?        00:00:00 [khubd]
root       151     2  0 Apr24 ?        00:00:00 [kworker/1:1H]
root       152     2  0 Apr24 ?        00:00:00 [kworker/2:1H]
root       154     2  0 Apr24 ?        00:00:00 [kworker/3:1H]
root       220     2  0 Apr24 ?        00:00:00 [jbd2/sda5-8]
root       221     2  0 Apr24 ?        00:00:00 [ext4-rsv-conver]
root       222     2  0 Apr24 ?        00:00:00 [ext4-unrsv-conv]
root       260     1  0 Apr24 ?        00:00:11 /usr/lib/systemd/systemd-journald
root       261     2  0 Apr24 ?        00:00:00 [kauditd]
root       296     1  0 Apr24 ?        00:00:00 /usr/lib/systemd/systemd-udevd
root       381     2  0 Apr24 ?        00:00:00 [irq/46-mei_me]
root       382     2  0 Apr24 ?        00:00:00 [hd-audio0]
root       387     2  0 Apr24 ?        00:00:00 [kvm-irqfd-clean]
root       426     2  0 Apr24 ?        00:00:00 [jbd2/sda7-8]
root       427     2  0 Apr24 ?        00:00:00 [ext4-rsv-conver]
root       428     2  0 Apr24 ?        00:00:00 [ext4-unrsv-conv]
root       430     2  0 Apr24 ?        00:00:00 [jbd2/sda9-8]
root       431     2  0 Apr24 ?        00:00:00 [ext4-rsv-conver]
root       432     2  0 Apr24 ?        00:00:00 [ext4-unrsv-conv]
root       438     2  0 Apr24 ?        00:00:01 [jbd2/sda6-8]
root       439     2  0 Apr24 ?        00:00:00 [ext4-rsv-conver]
root       440     2  0 Apr24 ?        00:00:00 [ext4-unrsv-conv]
avahi      624     1  0 Apr24 ?        00:01:38 avahi-daemon: running [fphct03.local]
root       625     1  0 Apr24 ?        00:00:00 /sbin/rpcbind -w -f
nscd       628     1  0 Apr24 ?        00:00:07 /usr/sbin/nscd --foreground
message+   631     1  0 Apr24 ?        00:00:10 /bin/dbus-daemon --system --address=systemd: --
root       642     1  0 Apr24 ?        00:00:04 /usr/lib/systemd/systemd-logind
root       644     1  0 Apr24 ?        00:00:07 /usr/local/natinst/nisvcloc/bin/nisvcloc -D
root       647     1  0 Apr24 ?        00:00:03 /usr/sbin/rsyslogd -n
root      1233     1  0 Apr24 ?        00:00:00 /usr/sbin/sshd -D
root      1241     1  0 Apr24 ?        00:00:01 /usr/sbin/ypbind -n -no-dbus
root      1246     2  0 Apr24 ?        00:00:00 [rpciod]
root      1247     2  0 Apr24 ?        00:00:00 [nfsiod]
root      1255     1  0 Apr24 ?        00:00:00 /usr/sbin/rpc.gssd -D -p /var/lib/nfs/rpc_pipef
root      1261     1  0 Apr24 ?        00:00:00 /usr/sbin/rpc.idmapd -p /var/lib/nfs/rpc_pipefs
root      1264     2  0 Apr25 ?        00:00:00 [kworker/u8:2]
root      1276     2  0 Apr24 ?        00:00:00 [nfsv4.0-svc]
root      1298     1  0 Apr24 tty1     00:00:00 /sbin/agetty --noclear tty1 linux
ntp       1319     1  0 Apr24 ?        00:00:11 /usr/sbin/ntpd -p /var/run/ntp/ntpd.pid -g -u n
root      1351     1  0 Apr24 ?        00:00:00 /usr/bin/kdm
root      1395     1  0 Apr24 ?        00:00:29 /usr/bin/python /usr/sbin/denyhosts --daemon --
root      1437     1  0 Apr24 ?        00:00:00 /usr/lib/postfix/master
root      1450     1  0 Apr24 ?        00:00:00 /usr/sbin/cron -n
postfix   1460  1437  0 Apr24 ?        00:00:00 qmgr -l -t fifo -u
root      1633     1  0 Apr24 ?        00:00:02 /usr/lib/upower/upowerd
polkitd   1638     1  0 Apr24 ?        00:00:09 /usr/lib/polkit-1/polkitd --no-debug
root      1678     1  0 Apr24 ?        00:00:41 /usr/lib/udisks2/udisksd --no-debug
rtkit     1748     1  0 Apr24 ?        00:00:02 /usr/lib/rtkit/rtkit-daemon
root      1777     1  0 Apr24 ?        00:00:00 /usr/lib/bluetooth/bluetoothd
root      1789     1  0 Apr24 ?        00:00:00 /usr/lib/systemd/systemd-hostnamed
root      1979  1351  0 Apr25 tty7     00:00:48 /usr/bin/Xorg -br :0 vt7 -nolisten tcp -auth /v
root      1987  1351  0 Apr25 ?        00:00:00 -:0
kdm       1988  1987  0 Apr25 ?        00:02:09 /usr/lib64/kde4/libexec/kdm_greet
root     17533     2  0 Apr26 ?        00:00:00 [kworker/u8:1]
root     21461     2  0 08:20 ?        00:00:00 [kworker/2:1]
root     22873     2  0 12:10 ?        00:00:00 [kworker/1:1]
postfix  23129  1437  0 12:47 ?        00:00:00 pickup -l -t fifo -u
root     23171     2  0 12:50 ?        00:00:00 [kworker/2:2]
root     23266     2  0 13:05 ?        00:00:00 [kworker/3:1]
root     23300     2  0 13:11 ?        00:00:00 [kworker/0:2]
root     23393     2  0 13:20 ?        00:00:00 [kworker/3:2]
root     23407     2  0 13:22 ?        00:00:00 [kworker/0:0]
root     23428     2  0 13:26 ?        00:00:00 [kworker/1:0]
root     23481  1233  0 13:34 ?        00:00:00 sshd: myuserid [priv]
myuserid    23484     1  0 13:34 ?        00:00:00 /usr/lib/systemd/systemd --user
myuserid    23485 23484  0 13:34 ?        00:00:00 (sd-pam)
myuserid    23486 23481  0 13:34 ?        00:00:00 sshd: myuserid@pts/2
myuserid    23487 23486  0 13:34 pts/2    00:00:00 -bash
root     23547     2  0 13:35 ?        00:00:00 [kworker/2:0]
root     23561     2  0 13:35 ?        00:00:00 [kworker/0:1]
myuserid    23595 23487  0 13:37 pts/2    00:00:00 ps -ef
nameofpc:~ >

@tripleee:.procmailrc(はい、そこにゴミがあることを知っています)は次のとおりです。

# .procmailrc
# routes incoming mail to appropriate mailboxes
PATH=/usr/local/bin:/usr/bin:/bin
MAILDIR=$HOME/.mailspool   # all mailboxes are in .mailspool/
#DEFAULT=$HOME/.mailspool/mbox
DEFAULT=/var/spool/mail/myuserid
LOGFILE=/dev/null
SHELL=/bin/bash
{
:0
* ^From myemail@myexternalfreemailprovider\.com
{
 :0
 | /home/myuserid/start >/dev/null
}
}

これがなぜ必要なのかを尋ねる場合:外部の無料メールアカウントでメールを受信するたびに、ホストシステムの作業(Payload.shと呼びます)が(nocronとnoなしでat)実行されることを確認したいと思います。 6時間。だから私は外部メールアカウントのメールをホストに転送し、procmailは新しいメールが届くたびに私のスクリプト「start」を開始します。スタートでは、以前の起動スクリプトがまだ実行されていることを確認します。そうであれば、新しい2番目の "start"を終了し、そうでない場合(おそらくホストのシャットダウンのため)、 "start"は6時間ごとにPayload.shを呼び出します。この問題に対するより簡単な解決策がわかっている場合は、ここに自由に書いてください。

答え1

上記のコメントスレッドで見つかったように、Procmailはログインしているホスト以外のホストで実行されているという説明があります。通常、これは管理者がメール配信ホストを通常の本番システムから分離することを決定したときに発生します。一般的な配列は、メール配信ホストがホームディレクトリをNFSにマウントしてメッセージを読み取り可能な場所に渡しますが、そうでなければユーザーはアクセスできませんが読み取り可能な別のローカルファイルシステムに転送することです。 .)

メール処理ホストにログインする権限がある場合は、ログインして不要なプロセスを終了します。

ログインアクセス権がない場合は、.procmailrcメール処理ホストにスクリプトを追加し、このコードを実行するための条件をトリガーする電子メールを自分に送信して、メール処理ホストで任意のコードを実行できます。

例えば、

:0
* ^Subject: secret sauce
| ps -wallx >ps.out

(もちろん、他の人があなたの実験を簡単に妨げないように、他のトリガーを使用してください。)

killトリガされると、終了したいプロセスのPIDを持つコマンドでタスクを変更するために必要な情報が必要です。

(完了したら、このレシピを削除する必要があります.procmailrc.。)

厄介な管理者は、Procmailがこのようなことをするのが好きではありません。この機能を使用して「クリエイティブ」タスクを実行すると、Procmailがブロックまたは追い出される可能性があります。注意して使用してください。

関連情報