检查程序/脚本是否在启动时运行?

检查程序/脚本是否在启动时运行?

在Linux中,我们可以修改许多文件来添加启动时运行的程序(/etc/rc.local、bashrc、bash_profile、$HOME/.config/autostart,...)?现在我有一个反向问题:我有一个程序,我可以检查这个程序是否在启动过程中运行吗?

**注意:程序只能在启动和退出时运行一次

答案1

你可以看看存取时间对于脚本。这不是 100% 可靠(因为某些文件系统可能已noatime设置)。但它通常对初始化脚本很有用,例如,

find /etc -type f -atime -1

我发现它很有用一段时间

答案2

pstree将为您提供以树格式运行的进程的详细输出。

此处输出示例

init─┬─auditd───{auditd} ├─crond ├─docker─┬─10*[bash] │ ├─docker───5*[{docker}] │ ├─docker───4*[{docker}] │ ├─2*[docker───3*[{docker}]] │ ├─start-app.sh─┬─java───40*[{java}] │ │ └─tail │ ├─start-app.sh─┬─java───81*[{java}] │ │ └─tail

答案3

您可以执行下一个命令:

ps aux | grep PROCESS_NAME

例如对于一个ping进程,结果将是:

user  9639  0.0  0.0   6508   732 pts/16   S+   08:44   0:00 ping 192.168.0.1
user  9641  0.0  0.1  12972  2420 pts/15   R+   08:44   0:00 grep --colour=auto ping

如果只得到第二行,则说明该进程没有运行。

如果您怀疑该进程崩溃了,您可以使用atop,您可以找到另一个关于atop 这里

答案4

我会查看初始化位置并查看程序是否设置在那里运行。

老实说,如果程序以某种方式可以运行,但你不知道它是否运行,查看它是否运行的唯一机会是检查它是否有运行的方式(例如在某些local.rc或此类中注册),或者通过检查结果(例如,程序总是接触 file /home/someuser/a,并且没有其他东西应该接触它)。

以上假设您没有任何日志。

相关内容