在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
,并且没有其他东西应该接触它)。
以上假设您没有任何日志。