리눅스에서 어떤 사용자가 어떤 프로세스를 실행시켰는지 확인하려면 ps 명령어와 grep을 조합해서 사용하면 된다.
1. 실행된 전체 프로세스 출력
백그라운드를 포함해서 실행 중인 모든 프로세스를 확인하려면
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
이런 패턴으로 필터링해서 검색할 수 있다. 각각 mysql과 postgres 사용자에 의해 프로세스가 실행된 걸 알 수 있다.
프로세스명 말고 PID를 찾아서 검색도 가능하다.
결국 ps -ef 로 모든 프로세스를 출력하고 거기서 원하는 단어를 grep으로 필터링 하는 것이다.
3. 내용이 길면 less로 출력
이건 그냥 별도 팁인데 출력이 길어지면 한 화면에 내용이 다 담기지 않기 때문에 스크롤을 올려서 시작점을 찾고 다시 차근 차근 내려야하는 수고로움이 있는데 이럴 때 결과를 less로 출력하면 처음부터 편하게 볼 수 있다.