由 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 分钟向日志中写入一个时间戳。即使删除shell脚本也不起作用,显然它已经在内存中了,不需要再次读取。现在我想,至少作业会在重新启动后终止,但事实并非如此。为了停止输出,我唯一能做的就是使日志文件对所有人都不可写,但即使如此,作业仍会继续运行(当我再次使文件可读时,我会看到它)。

现在我的问题是:如何以非root用户身份杀死这个脚本?或者如果根本没有:我做错了什么?我如何通过 procmail 调用脚本才能显示在 ps 输出中并且(更重要的是)使其可以被我杀死?

我没有机器的 root 访问权限,但我有物理访问权限,所以我可以重新启动它。操作系统似乎是 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
}
}

如果您问我为什么需要这个:我想确保每次在我的外部免费邮件帐户收到邮件时,主机(没有 nocron和 no at)上的作业(我们称之为 Payload.sh)每 6 运行一次小时。因此,我将邮件从外部邮件帐户转发到主机,每次新邮件到达时 procmail 都会启动我的脚本“start”。在“开始”中,我将检查较早的“开始”脚本是否仍在运行。如果是,则退出新的第二个“start”,如果不是(可能是由于主机关闭),则“start”将每 6 小时调用 Payload.sh 一次。如果您知道解决此问题的更简单的解决方案,请随意将其写在这里。

答案1

正如上面的评论线程中发现的那样,解释是 Procmail 运行在与您登录的主机不同的主机上。通常,当管理员决定将邮件传递主机与常规生产计算机等分开时,就会发生这种情况。一种常见的安排是邮件传递主机安装了您的主目录 NFS,以便它可以将消息传递到您可以阅读的地方,但否则是用户无权访问的单独的本地文件系统(但请继续阅读...)

如果您有权登录邮件处理主机,只需登录并终止不需要的进程即可。

如果您没有登录访问权限,则可以通过向邮件处理主机添加脚本并向自己.procmailrc发送一封电子邮件来触发运行此代码的条件,从而在邮件处理主机上运行任意代码段。

例如,

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

(显然,使用不同的触发器,这样其他人就不会轻易干扰你的实验。)

一旦触发,您应该拥有将操作更改为带有kill要终止进程的 PID 的命令所需的信息。

(完成后,您将需要从您的 中清除此食谱.procmailrc.

偏执的管理员不喜欢 Procmail 可以做到这一点。使用此功能做“创造性”的事情可能会导致 Procmail 被禁止,或者您被赶出。小心使用。

相关内容