很久以前,我复制/修改了一个脚本,该脚本用于在将某些内容下载到“下载”时inotify
告诉我自动的结果- 我遵循了此在线资源:clamscan
https://fitzcarraldoblog.wordpress.com/2017/03/05/using-the-clamav-daemon-to-scan-files-placed-in-my-downloads-directory-in-gentoo-linux/。
我的问题:我如何找出正在执行这个名为 的脚本的内容clamscanInotify.sh
?
尽管教程建议使用crontab
,我也这样做了,并且已经从我的crontab -e
文件中进行了编辑,但该脚本仍然以某种方式被执行。
我检查过;
我的用户的 crontab,
我的 root 的 crontab,
所有 cron.daily/weekly/etc,
/etc/cron.d/
并且不能执行脚本的内容。我看过使用journal
;
journalctl -b | grep cron
或者当我知道下载某些东西的大概时间时,
journalctl -b | grep -e "10:00"
我还刚刚使用 grep 搜索可执行文件名称的字符串 - clamscanInotify.sh
,
sudo grep -rnw / -e "clamscanInotify.sh",
但没有在任何地方找到该字符串,甚至在/etc/
.
我没有at/atd
守护进程,我想不出还能做什么来寻找调用此可执行脚本的任何内容clamscanInotify.sh
。
它也不在"Startup Applications"
使用桌面 GUI 的 Linux Mint 的选择中。
我不想简单地删除 *.sh 文件,但我的屏幕和终端充满了zenity
窗口和消息,这很烦人。
有什么想法可以去哪里看吗?
聚苯乙烯
这是我的照片(h)top
;
答案1
缓慢的方法是使用PS:“ps -o comm= -p $PPID”做什么捕获父进程,直到找到有趣的东西。
由于您在脚本中使用 bash,因此添加:
ps -o pid=,comm= -p $PPID
并将其重定向到临时文件。检查该文件的内容,然后检查父树;例如,如果该文件包含:
8815 bash
然后跟进:
ps -o ppid=,comm= -p 8815
我们在这里请求进程 8815 的父进程 pid 和命令。
对于 Linux 系统,插入pstree -s -p $$
以询问当前进程的祖先链 ( $$
)。
在某些时候,您最终会看到桌面管理器或您用来登录的任何方法。
您的 bash 初始化脚本之一完全有可能正在设置此功能;我想借这个答案,例如并运行类似:
bash -ix </dev/null 2>trace
然后trace
在文件中搜索相关的 inotify 脚本。正如链接的答案也所说,最好的初步猜测是:
~/.bash_profile
~/.profile
~/.bash_login
/etc/profile
~/.bashrc
...在这种情况下你可以尝试:
grep clamscanInotify.sh ~/.bash_profile ~/.profile ~/.bash_login /etc/profile ~/.bashrc