
В Linux есть много файлов, которые мы можем изменить, чтобы добавить программу, запускаемую при запуске (/etc/rc.local, bashrc, bash_profile, $HOME/.config/autostart, ...) ? Теперь у меня обратный вопрос: у меня есть программа, могу ли я проверить, была ли эта программа запущена при запуске?
**Примечание: программа может быть запущена один раз при запуске и выходе.
решение1
Вы можете посмотреть навремя доступадля скрипта. Это не на 100% надежно (так как некоторые файловые системы могут иметь noatime
set). Но это обычно полезно для init-скриптов, например,
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
или что-то в этом роде), либо проверить результаты (например, программа всегда обращается к файлу /home/someuser/a
, и ничто другое не должно было к нему обращаться).
Вышеизложенное предполагает, что у вас нет никаких журналов.