Shell Command #MEMO

정지원·2020년 5월 4일
0

background mode로 켜놓고 안 보이게 하려면

$ SIGSTP (ctrl + z)
$ bg
$ disown -h [jobspec]

SIGSTP : 프로세스 일시정지 (중단 아님)

bg : background mode

disown -h : -h 옵션을 사용하면 jobspec은 job list에서 삭제되지 않지만 쉘이 SIGHUP을 수신하여도 SIGHUP을 해당 작업에 보내지 않는다.

bg는 작업을 백그라운드로 보내는 명령어이다. (명령어 마지막에 &를 붙여주면 같은 기능을 한다.) 이는 stdin을 block하고 job이 끝날 때까지 shell이 기다리지 않게 해준다.

disown은 shell의 job list에서 job을 제거하여 세션을 종료했을 때 SIGHUP로부터 보호받을 수 있다. (-h 옵션을 통해 제거하지 않을 수 있다.) but, 여전히 터미널에 연결되어 있으므로 터미널이 destroyed되면 프로그램도 stdin에서 내용을 읽어오려하거나 stdout에 무언가를 쓰려는 순간 꺼진다.

쉽게 말해서 disown은 프로세스에 대한 소유권을 포기하는 것이다. 나의 job 리스트에 있는 것이 아니므로 내가 접속을 끊어도 작업은 background에서 계속 돌아간다.

$ netstat -nap | grep 8888

위 명령어로 확인할 수 있다.

-n : number port
-a : all
-p : PID

프로세스

ssh 이름이 들어가는 프로세스 정보 표시

$ ps -ef | grep ssh

-e : 모든 프로세스 표시
-f : 프로세스의 정보를 더 많이 출력

프로세스 중지(kill)

$ kill -9 `ps -ef | grep 'PROCESS_NAME' | awk '{print $2}'`
$ kill -KILL `lsof -t -u jiwon`

kill -9 : PID로 프로세스를 중지
awk '{print $2}' : 검색된 줄에서 2번째 항목(PID) 출력
-KILL lsof -t -u jiwon : jiwon 사용자의 모든 프로세스 중지

lsof (list of files)

$ lsof
$ lsof -u jiwon
$ lsof /var/log/httpd/access_log
$ lsof -i [TCP]:22
$ lsof -i 4
$ lsof -t -u jiwon

lsof : 모든 열린 파일 출력
-u jiwon : 특정 사용자(jiwon)의 열린 파일 출력
lsof /var/log/httpd/access_log : 특정 파일을 사용하는 프로세스 보기
-i TCP:22 : TCP 프로토콜의 22번 포트를 사용하는 프로세스 정보를 출력. (22-80처럼 범위 지정도 가능)
-i 4 : IPv4 버전만 확인. (IPv6일 경우 6)
-t : 자세한 정보를 출력하지 않고 pid만 출력.
-u jiwon : jiwon 사용자로 구동한 프로세스

ssh

여기

vim

여기

우분투 지금 종료

sudo shutdown -h now
더 알아보자
$ find ./Girlgroup ! -name "Sistar" -exec grep -r "Sexy" {} \;
$ find ./Girlgroup ! -name "Sistar" | xargs grep "Sexy"

위의 내용은 여기

$ find / -name passwd > pw.dat   2>pw.err &

프로그램 > 실행결과 > 오류 메세지
실행 결과와 오류 메세지의 출력 방향을 바꾼다.

$ find . -exec mycommand '{}' '+'
$ find . -name '*.class' -exec rm {} \;

현재 디렉토리와 하위 디렉토리에서 .class로 끝나는 모든 파일을 찾아서 화면에 나타내고 그 파일을 모두 삭제한다.

exec : 뒤의 rm 명령어를 실행한다
{} : find 명령의 결과
\; : 명령 끝

참고

0개의 댓글