리눅스 프로세스 실행한 사용자 확인 방법

리눅스에서 어떤 사용자가 어떤 프로세스를 실행시켰는지 확인하려면 ps 명령어와 grep을 조합해서 사용하면 된다.

1. 실행된 전체 프로세스 출력

백그라운드를 포함해서 실행 중인 모든 프로세스를 확인하려면

ps -ef

를 입력한다.

ps -ef 결과

프로세스를 실행한 사용자(UID)와 PID, CPU 점유율, 실행 명령줄 등의 정보가 출력되는 걸 볼 수 있다.

이 자체로는 원하는 프로세스를 하나 하나 찾기가 어렵기 때문에 grep 명령어를 함께 쓴다.

2. 찾으려는 프로세스 필터링해서 출력

ps -ef | grep [프로세스명 또는 PID]

형태로 쓴다.

만약 mariadb를 실행한 사용자가 궁금하면

[root@newhost ~]# ps -ef | grep maria
mysql      4180      1  0 18:25 ?        00:00:00 /usr/sbin/mariadbd
root       4384   4077  0 18:34 pts/1    00:00:00 grep --color=auto maria

postgresql를 실행한 사용자를 보려면

[root@newhost ~]# ps -ef | grep postgres
postgres   1088      1  0 17:40 ?        00:00:00 /usr/pgsql-12/bin/postmaster -D /home/postgres/data/
postgres   1196   1088  0 17:40 ?        00:00:00 postgres: logger
postgres   1223   1088  0 17:40 ?        00:00:00 postgres: checkpointer
postgres   1224   1088  0 17:40 ?        00:00:00 postgres: background writer
postgres   1226   1088  0 17:40 ?        00:00:00 postgres: walwriter
postgres   1228   1088  0 17:40 ?        00:00:00 postgres: autovacuum launcher 
postgres   1229   1088  0 17:40 ?        00:00:00 postgres: stats collector
postgres   1230   1088  0 17:40 ?        00:00:00 postgres: logical replication launcher
root       4386   4077  0 18:34 pts/1    00:00:00 grep --color=auto postgres
ps grep

이런 패턴으로 필터링해서 검색할 수 있다. 각각 mysql과 postgres 사용자에 의해 프로세스가 실행된 걸 알 수 있다.

프로세스명 말고 PID를 찾아서 검색도 가능하다.

pid로 grep 하기

결국 ps -ef 로 모든 프로세스를 출력하고 거기서 원하는 단어를 grep으로 필터링 하는 것이다.

3. 내용이 길면 less로 출력

이건 그냥 별도 팁인데 출력이 길어지면 한 화면에 내용이 다 담기지 않기 때문에 스크롤을 올려서 시작점을 찾고 다시 차근 차근 내려야하는 수고로움이 있는데 이럴 때 결과를 less로 출력하면 처음부터 편하게 볼 수 있다.

댓글 남기기