web-dev-qa-db-ja.com

起動時にプログラム/スクリプトが実行されたかどうかを確認しますか?

Linuxでは、起動時に実行するプログラムを追加するために変更できるファイルがたくさんあります(/etc/rc.local、bashrc、bash_profile、$HOME/.config/autostart、...)?逆の質問があります。プログラムがあります。このプログラムが起動時に実行されたかどうかを確認できますか?

**注:プログラムは起動時と終了時に一度実行できます

3
tuantm

スクリプトのアクセス時間を確認できます。これは100%信頼できるものではありません(一部のファイルシステムではnoatimeを設定できるため)。しかし、それは通常init-scriptsに役立ちます、例えば、

find /etc -type f -atime -1

かなりしばらく の場合に便利です。

2
Thomas Dickey

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

1
Govind Kailas

次のコマンドを実行できます。

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

2行目しか表示されない場合は、プロセスが実行されていないことを意味します。

プロセスがクラッシュしていると思われる場合は、atopを使用できます。atophere に関する別の質問が見つかります。

0
Iñaki Murillo

私はinitの場所を見て、プログラムが実行されるように設定されているかどうかを確認します。

正直なところ、プログラムがどういうわけかcould実行されたが、実行されたかどうかがわからない場合、実行されたかどうかを確認できる唯一のチャンスは、実行方法があるかどうかを確認することです(eg一部のlocal.rcなどに登録されている)、または結果を確認することで登録されている(たとえば、プログラムは常にファイル/home/someuser/aにアクセスし、他には何もアクセスしていないはずです)。

上記は、ログがないことを前提としています。

0
MatthewRock