10 개의 Liux 작업 제어 bash 스 크 립 트 예제

Liux 와 유 닉 스 는 다 중 태 스 크 운영 체제 입 니 다. 즉, 시스템 은 여러 작업 이나 프로 세 스 를 동시에 실행 할 수 있 습 니 다.다음은 Liux 나 유 닉 스 에서 다 중 작업 을 처리 하 는 작업 제어 명령 을 말씀 드 리 겠 습 니 다.작업 제어 (job control) 란 무엇 입 니까? 작업 제 어 는 실행 중인 프로그램 을 멈 추거 나 멈 출 수 있 으 며, 중 단 된 프로 세 스 를 다시 시작 할 수 있 습 니 다. 이것 은 우리 셸 프로그램 을 통 해 이 루어 집 니 다. 1. linux/unix 작업 (job) 을 만 듭 니 다.
[root@devops ~]# top &
[1] 26569

이 예 에서:
[1]:         1
26569:       ID 

몇 가지 작업 을 더 만 듭 시다.
gedit /tmp/test.c &
sleep 1000 &

2. 배경 에서 실행 중인 작업 을 보 여 줍 니 다. 현재 실행 중인 작업 의 상 태 를 보기 위해 아래 명령 을 입력 할 수 있 습 니 다.
$jobs
$jobs -l

명령 출력 은 다음 과 같 습 니 다:
[root@devops ~]# jobs
[1]-  Stopped                 top
[2]+  Stopped                 vim /tmp/test.c
[3]   Running                 sleep 1000 &
[root@devops ~]# jobs -l
[1]- 26650 Stopped (tty output)    top
[2]+ 26651 Stopped (tty output)    vim /tmp/test.c
[3]  26653 Running                 sleep 1000 &
[root@devops ~]#

3. 실행 중인 작업 을 중단 하거나 중단 합 니 다. 프로그램 이 실행 중 일 때 이 프로그램 을 배경 에서 실행 시 키 려 면 [ctrl] + [z] 를 사용 하거나 kill 명령 을 사용 할 수 있 습 니 다.
kill -s stop PID

실행 중인 ping 명령 을 ctrl + z 로 일시 정지 합 니 다.
[root@devops ~]# ping osetc.com
PING osetc.com (42.96.192.124) 56(84) bytes of data.
64 bytes from 42.96.192.124: icmp_seq=1 ttl=64 time=0.031 ms
64 bytes from 42.96.192.124: icmp_seq=2 ttl=64 time=0.036 ms
64 bytes from 42.96.192.124: icmp_seq=3 ttl=64 time=0.033 ms
^Z
[4]+  Stopped                 ping osetc.com
[root@devops ~]#

4. 일시 정 지 된 작업 을 프론트 데스크 로 복원 하여 실행 할 수 있 습 니 다. fg 명령 을 사용 하여 백 스테이지 에 있 는 ping 프로 세 스 를 프론트 데스크 로 옮 겨 실행 할 수 있 습 니 다. 사용 방법 은 다음 과 같 습 니 다.
fg %5    #fg       ,      

"ping"으로 시작 하 는 모든 명령 행 작업 을 수행 하려 면 아래 형식 을 사용 하 십시오.
fg %ping

예제 출력:
root@devops ~]# fg %4
ping osetc.com
64 bytes from 42.96.192.124: icmp_seq=4 ttl=64 time=0.033 ms
64 bytes from 42.96.192.124: icmp_seq=5 ttl=64 time=0.030 ms
64 bytes from 42.96.192.124: icmp_seq=6 ttl=64 time=0.030 ms
64 bytes from 42.96.192.124: icmp_seq=7 ttl=64 time=0.036 ms
^C
[root@devops ~]# fg %ping
ping osetc.com
64 bytes from 42.96.192.124: icmp_seq=3 ttl=64 time=0.023 ms
64 bytes from 42.96.192.124: icmp_seq=4 ttl=64 time=0.031 ms
64 bytes from 42.96.192.124: icmp_seq=5 ttl=64 time=0.030 ms
64 bytes from 42.96.192.124: icmp_seq=6 ttl=64 time=0.029 ms
^C
--- osetc.com ping statistics ---
6 packets transmitted, 6 received, 0% packet loss, time 10964ms
rtt min/avg/max/mdev = .023/0.027/0.031/0.006 ms

5. 백 엔 드 가 멈 춘 프로 세 스 를 백 엔 드 에서 계속 실행 합 니 다. bg 명령 을 사용 하여 백 엔 드 에 걸 린 프로 세 스 를 다시 시작 할 수 있 습 니 다. 예 를 들 어 다음 과 같 습 니 다.
[root@devops ~]# jobs
[2]-  Stopped                 vim /tmp/test.c
[4]+  Stopped                 ping osetc.com
[5]   Running                 sleep 1000000 &
[root@devops ~]# kill -s stop %5
[root@devops ~]# jobs
[2]   Stopped                 vim /tmp/test.c
[4]-  Stopped                 ping osetc.com
[5]+  Stopped                 sleep 1000000

위 예제 에서 보 듯 이 sleep 프로 세 스 를 실행 하 는 중 끊 겼 습 니 다.
[root@devops ~]# bg %5
[5]+ sleep 1000000 &
[root@devops ~]# jobs
[2]-  Stopped                 vim /tmp/test.c
[4]+  Stopped                 ping osetc.com
[5]   Running                 sleep 1000000 &

배경 에 걸 려 있 는 프로 세 스 를 다시 시작 합 니 다. 6. 프로 세 스 를 죽 입 니 다. Liux 명령 의 프로 세 스 를 죽 이기 위해 kill 명령 에 이 프로 세 스 의 작업 ID 번 호 를 입력 할 수 있 습 니 다. 사용 방법 은 다음 과 같 습 니 다.
#kill %4

예제 출력 은 다음 과 같 습 니 다.
[root@devops ~]# jobs
[2]-  Stopped                 vim /tmp/test.c
[4]+  Stopped                 ping osetc.com
[5]   Running                 sleep 1000000 &
[root@devops ~]# kill %4
[4]+  Stopped                 ping osetc.com
[root@devops ~]# jobs
[2]-  Stopped                 vim /tmp/test.c
[4]+  Terminated              ping osetc.com
[5]   Running                 sleep 1000000 &
[root@devops ~]# jobs
[2]+  Stopped                 vim /tmp/test.c
[5]-  Running                 sleep 1000000 &
[root@devops ~]#

7. 셸 이 종료 후 모든 백 엔 드 작업 프로 세 스 를 죽 이 는 이 유 는 기본적으로 현재 셸 이 종료 할 때 HUP 신 호 를 보 내 모든 백 엔 드 작업 을 죽 이 는 것 입 니 다. 현재 셸 이 종료 한 후에 도 백 엔 드 에서 작업 을 계속 할 수 있 도록 하려 면 disown 명령 을 입력 하고 셸 프로그램 을 종료 할 수 있 습 니 다.
[root@devops ~]# jobs
[1]+  Running                 tail -f /var/log/messages &
[root@devops ~]# disown
[root@devops ~]# exit

8. nohup 명령 을 사용 하여 배경 프로 세 스 가 셸 을 종료 한 후 죽 는 것 을 막 습 니 다.
[root@devops ~]# nohup tail -f /var/log/messages &
[1] 26806
[root@devops ~]# exit

9. 최근 에 실 행 된 작업 의 프로 세 스 번 호 를 찾 습 니 다. 최근 에 실 행 된 작업 의 프로 세 스 ID 번 호 를 찾기 위해 아래 의 특수 기 호 를 사용 할 수 있 습 니 다: $!
[root@devops ~]# jobs -l
[1]+ 26832 Stopped (tty output)    top
[2]- 26833 Running                 sleep 100000 &
[root@devops ~]# echo $!
26833

10. wait 명령 대기 작업 완료 wait 명령 은 주어진 프로 세 스 ID 가 실 행 될 때 까지 기다 린 다음 wait 명령 을 실행 한 프로그램 입 니 다.
sleep 100 &
wait $!
date

글 은 오리지널 번역 입 니 다. 전송 은 글 출처 링크 를 표시 하 십시오: Liux 작업 제어

좋은 웹페이지 즐겨찾기