
En Linux, hay muchos archivos que podemos modificar para agregar un programa que se ejecuta al inicio (/etc/rc.local, bashrc, bash_profile, $HOME/.config/autostart, ...). Ahora tengo una pregunta inversa: tengo un programa, ¿puedo verificar si este programa se ejecutó durante el inicio?
**Nota: El programa se puede ejecutar una vez al inicio y al salir.
Respuesta1
Puedes mirar eltiempo de accesopara el guión. Esto no es 100% confiable (ya que algunos sistemas de archivos pueden haberse noatime
configurado). Pero suele ser útil para scripts de inicio, por ejemplo,
find /etc -type f -atime -1
Lo he encontrado útil paraun buen rato.
Respuesta2
pstree
le brindará un resultado detallado del proceso que se ejecuta en formato de árbol.
Salida de muestra aquí
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
Respuesta3
Puedes ejecutar el siguiente comando:
ps aux | grep PROCESS_NAME
Por ejemplo para un ping
proceso, el resultado será:
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
Si solo obtienes la segunda línea, significa que el proceso no se está ejecutando.
Si sospecha que el proceso falla, puede usar atop
, puede encontrar otra pregunta sobreatop
aquí.
Respuesta4
Miraría las ubicaciones de inicio y vería si el programa está configurado allí para ejecutarse.
Honestamente, si el programa de alguna manerapodríaejecutar, pero no sabe si se ejecutó o no, la única posibilidad de ver si se ejecutó es verificar si tenía una forma de ejecutarse (por ejemplo, estaba registrado en alguno local.rc
o algo así), o verificando los resultados ( por ejemplo, el programa siempre toca el archivo /home/someuser/a
y nada más debería haberlo tocado).
Lo anterior supone que no tiene ningún registro.