: ps, kill top, nohup, nice
명령어 자체가 실행프로그램으로 존재하므로 끝나면 저장이 되지 않는다.
현재 동작중인 프로세스들을 출력한다.
ps
: 현재 창(터미널)에서 실행한 프로세스만 출력한다.
ps -x
: 자신이 사용하는 모든 프로세스를 출력한다. new session
을 선택하면 창을 여러개 사용하는 것이 가능하다.
ps -aux
: 시스템에서 동작하는 모든 프로세스들을 출력한다.
pid는 프로세스 id이다. 프로세스를 구분할 수 있다.
로그인 shell은 bash이다. bash가 명령어를 기다리고 있는 것.
ps도 명령어 동작중에는 돌아가고 있다. bash의 pid는 변하지 않는다. 프로세스를 구별해 주는 것!
그러나 ps를 재실행하게되면, bash shell이 자식 프로세스 형태로 실행시켜주고 종료한다.
즉, 재실행할때마다 pid는 바뀐다.
new session을 통해 새로운 창을 오픈한 것이다.
ps -x를 해줘서 자신이 사용하는 모든 프로세스를 출력할 수 있다.
새 창의 pid는 23330인 걸 알 수 있는데, 아래 자세히 보면 23231을 발견할 수 있다.
하지만, ps는 내부 명령어가 아니기 때문에 끝나면 저장이 되지 않는다. 그래서 23245는 없다.
sshd는 로그인을 위한 프로그램이다.
특정 프로세스에게 signal을 보낼 때 사용한다.
-s signal
: 프로세스에게 보낼 signal을 명시
-KILL
: 보통의 kill로 죽지 않는 경우
-HUP
: 데몬 프로세스를 다시 실행할 때 사용한다.
option을 쓰지 않으면, SIGTERM
시그널을 프로세스에게 보내 프로세스를 종료한다.
실행한 프로세스 외에도 환경/편의 위해 시스템이 한번 시작되면 shut down되기전까지 background에 돌고있는 것이다.
이렇게 무한루프를 도는 프로그램을 만들어서 실행파일을 만들고
실행시키면 명령어를 칠 수 없이 계속 프로그램이 돌아가는 상태가 된다.
새 터미널을 켜서 위에서 배운 ps -x로 해당 pid를 알아내서 kill pid 해주면 끝! 꽤나 간편하다.
프로세스가 종료되었다!
cpu 사용량이 top인 프로세스들을 출력한다.
-d delay
: 화면 갱신 시간을 설정한다.
-p
: 화면을 계속 갱신한다. (끝내고 싶을 때)
-c
: command list 전체를 보여준다.
-i
: idle상태와 zombie프로세스는 무시한다.
htop
: 좀 더 예쁘게 보여준다.
q
를 누르면 꺼진다.
여기서 PR 과 NI는 우선순위를 보여주는 것과 관련된 값이다.
로그아웃 후에도 계속 프로세스가 수행되도록 한다.
로그아웃 후 즉, 터미널 창을 닫으면 bash가 사망한다. 프로세스가 원래는 실행되지 않지만, 실행할 수 있다!
nohup a.out 해주고 터미널 종료해준다. top으로 확인해주면 돌아가는 것을 확인할 수 있다.
pid 확인해주고
터미널 창을 닫아도 돌아간다!
로그아웃해도 계속 돌아간다 + 근데 background상태로 돌아간다. (터미널을 장악하지 않는다.)
프로세스를 매우 낮은 우선수위로 수행시킨다.
cpu 여유있을때만 실행한다. 우선순위를 낮추는 것이다.
cpu가 충분해서 남아돌때는 cpu 제어권을 얻어 실행을 할 수 있지만, cpu가 모자라면 우선순위가 낮아서 수행이 밀린다.
shell자체에 built in되어있어서 bash가 자체적으로 처리한다.
: jobs, fg, bg
현재 터미널에서 수행 (표준입출력 가능)
터미널 이면에서 수행
fg 프로세스가 터미널을 장악하고 있으면 bg [job id]
통해 bg로 보낼 수 있다.
job id는 jobs 명령어로 확인이 가능하다.
커맨드 뒤에 & 붙이면 background로 process를 수행할 수 있다.
[1] 은 job id이고, 25355는 pid이다.
현재의 shell 아래에서 수행중인 process를 모두 보여준다.
pid가 아닌 job id를 확인할 수 있다. job id를 통해 foreground, background로 전환할 수 있다.
job id의 프로세스를 foreground로 전환한다.
job id가 없으면 가장 최근에 stop시킨 process 혹은 background로 수행시킨 process를 foreground로 전환한다.
job id의 프로세스를 background로 실행 재개
job id가 없으면 가장 최근에 stop된 프로세스를 foreground로 전환한다.
: ctrl + c(프로세스 강제 종료), ctrl + z(stopped 상태로 만든다. 즉, process를 swap area로 보낸다.)
foreground 프로세스의 종료 - 완전히 종료된다!
foreground 프로세스의 stop (suspended, 일시중지 -> swap area로)
fg, bg로 계속 실행이 가능하다.