uname
: 사용 중인 시스템 정보print system information
현재 사용중인 시스템을 출력
ubuntu@$your_host_name:~$ uname
Linux
-a
ubuntu@$your_host_name:~$ uname -a
Linux $your_host_name 5.15.0-1036-aws #40~20.04.1-Ubuntu SMP Mon Apr 24 00:21:13 UTC 2023 x86_64 x86_64 x86_64 GNU/Linux
ps
: 실행 중인 프로세스 정보report a snapshot of the current processes
현재 실행중인 프로세스를 확인하는 명령어 (프로그램이 '실행'이 되면 프로세스가 되는 것)
현재 프로세스에 문제가 있는지, 내가 실행한 어플리케이션 프로세스의 상태를 보는데 사용된다.
ubuntu@$your_host_name:~$ ps
PID TTY TIME CMD
1311 pts/0 00:00:00 bash
2653 pts/0 00:00:00 ps
-ef
-e
: 시스템에서 실행 중인 모든 프로세스를 표시-f
: 프로세스에 대한 상세 정보를 표시- UID: 프로세스의 사용자 식별자 (User ID)
- PID: 프로세스 ID (Process ID). 각 프로세스는 고유한 PID를 가집니다.
- PPID: 부모 프로세스 ID (Parent Process ID). 이 프로세스를 시작한 부모 프로세스의 PID를 나타냅니다.
- C: 프로세스의 CPU 사용량을 나타내는 값입니다.
- STIME: 프로세스가 시작된 시간을 나타냅니다.
- TTY: 터미널 유형을 나타냅니다. 대부분의 시스템에서는 ?로 표시됩니다.
- TIME: 프로세스가 CPU를 사용한 누적 시간을 나타냅니다.
- CMD: 프로세스를 시작한 명령어 또는 프로그램의 이름을 나타냅니다.
ubuntu@$your_host_name:~$ ps -ef
UID PID PPID C STIME TTY TIME CMD
root 1 0 0 09:35 ? 00:00:06 /sbin/init
root 2 0 0 09:35 ? 00:00:00 [kthreadd]
root 3 2 0 09:35 ? 00:00:00 [rcu_gp]
root 4 2 0 09:35 ? 00:00:00 [rcu_par_gp]
root 5 2 0 09:35 ? 00:00:00 [slub_flushwq]
root 6 2 0 09:35 ? 00:00:00 [netns]
root 7 2 0 09:35 ? 00:00:01 [kworker/0:0-events]
root 8 2 0 09:35 ? 00:00:00 [kworker/0:0H-events_highpri]
root 10 2 0 09:35 ? 00:00:00 [mm_percpu_wq]
root 11 2 0 09:35 ? 00:00:00 [rcu_tasks_rude_]
root 12 2 0 09:35 ? 00:00:00 [rcu_tasks_trace]
root 13 2 0 09:35 ? 00:00:00 [ksoftirqd/0]
root 14 2 0 09:35 ? 00:00:00 [rcu_sched]
root 15 2 0 09:35 ? 00:00:00 [migration/0]
...
-aux
-a
: 현재 로그인한 사용자와 관계없이 모든 사용자에 대한 프로세스를 표시-u
: 사용자 관련 정보를 표시-x
: 터미널에 연결되지 않은 프로세스도 표시 (데몬 프로세스 등)- USER: 프로세스의 소유자 (사용자 이름).
- PID: 프로세스 ID (Process ID). 각 프로세스는 고유한 PID를 가집니다.
- %CPU: CPU 사용량의 백분율을 나타냅니다.
- %MEM: 메모리 사용량의 백분율을 나타냅니다.
- VSZ: 가상 메모리 크기 (Virtual Memory Size).
- RSS: 실제 메모리에서 사용 중인 크기 (Resident Set Size).
- TTY: 터미널 유형을 나타냅니다. 대부분의 시스템에서는 ?로 표시됩니다.
- STAT: 프로세스 상태 (Running, Sleeping, Zombie 등)를 나타냅니다.
- START: 프로세스가 시작된 시간을 나타냅니다.
- TIME: 프로세스가 CPU를 사용한 누적 시간을 나타냅니다.
- COMMAND: 프로세스를 시작한 명령어 또는 프로그램의 이름을 나타냅니다.
ubuntu@$your_host_name:~$ ps -aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 1.2 169328 12784 ? Ss 09:35 0:06 /sbin/init
root 2 0.0 0.0 0 0 ? S 09:35 0:00 [kthreadd]
root 3 0.0 0.0 0 0 ? I< 09:35 0:00 [rcu_gp]
...
|
(파이프), grep
명령어와 함께 사용하여 원하는 프로세스만 보기ubuntu@$your_host_name:~$ ps -aux | grep python
root 490 0.0 1.8 29616 18164 ? Ss 09:36 0:00 /usr/bin/python3 /usr/bin/networkd-dispatcher --run-startup-triggers
root 667 0.0 2.0 108132 20548 ? Ssl 09:36 0:00 /usr/bin/python3 /usr/share/unattended-upgrades/unattended-upgrade-shutdown --wait-for-signal
ubuntu 2661 0.0 0.2 8168 2540 pts/0 S+ 18:05 0:00 grep --color=auto python
kill
: 프로세스 종료실행중인 프로세스를 종료시키기 위한 명령어
kill 명령어는 정확하게 말하면 SIGNAL
을 전달한다. 시그널은 프로세스에게 정보를 보내는 하나의 신호라고 생각하면 된다. 많이 사용되는 시그널은 다음과 같다.
-9
(SIGKILL) : 프로세스를 강제로 종료-15
(SIGTERM) : 어플리케이션에서 종료 시그널을 받았을 때 현재 처리하고 있는 내용을 다 처리하고 종료하거나 특정 상황에서 강제 종료되는 상황 등을 막기 위해 사용즉 -9
시그널은 언제든지 강제 종료가 되기 때문에 어플리케이션이 작업 중이던 내용을 다 처리하지 못하고 종료되지만, -15
시그널은 개발자가 시그널을 처리하기 위한 로직(코드)을 구현할 수 있다.
(`&` 기호는 백그라운드에서 실행할 수 있게 해주는 특수기호)
ubuntu@$your_host_name:~$ sleep 1000 &
[1] 2673
ubuntu@$your_host_name:~$ ps -aux | grep sleep
ubuntu 2673 0.0 0.0 7236 580 pts/0 S 18:32 0:00 sleep 1000
ubuntu 2676 0.0 0.0 8168 656 pts/0 S+ 18:33 0:00 grep --color=auto sleep
(종료하고자 하는 프로세스의 PID를 입력)
ubuntu@$your_host_name:~$ kill -9 2673
ubuntu@$your_host_name:~$ ps -aux | grep sleep
ubuntu 2679 0.0 0.0 8168 656 pts/0 S+ 18:34 0:00 grep --color=auto sleep
[1]+ Killed sleep 1000