bash 스크립트에서 control + c를 보내는 방법은 무엇입니까?
bash 스크립트에서 여러 화면을 시작한 다음 runserver
각 화면에서 django의 명령 을 실행 합니다. 나는 프로그래밍 보내달라고 요구하는뿐만 아니라, 그들 모두를 중지 할 수 있도록하고 싶습니다 Control+c
에 runserver
.
bash 스크립트에서 이러한 키 입력을 어떻게 보낼 수 있습니까?
Ctrl+CSIGINT
신호를 보냅니다 .
kill -INT <pid>
SIGINT
신호도 보냅니다 .
# Terminates the program (like Ctrl+C)
kill -INT 888
# Force kill
kill -9 888
888
프로세스 ID 라고 가정 합니다.
약간 다른 신호 를 kill 888
보내지 SIGTERM
만 프로그램을 중지하도록 요청합니다. 따라서 수행중인 작업을 알고 있다면 ( SIGINT
프로그램에 바인딩 된 핸들러가 없음 ) 간단한 kill
것으로 충분합니다.
스크립트에서 실행 된 마지막 명령의 PID를 얻으려면 다음을 사용하십시오 $!
.
# Launch script in background
./my_script.sh &
# Get its PID
PID=$!
# Wait for 2 seconds
sleep 2
# Kill it
kill $PID
CTRL-C 일반적으로 SIGINT 신호를 프로세스에 전송하므로 다음을 수행 할 수 있습니다.
kill -INT <processID>
명령 줄 (또는 스크립트)에서 특정 processID
.
대부분의 UNIX와 마찬가지로 거의 무한대로 구성 할 수 있기 때문에 "일반적으로"라고 말합니다. 를 실행 stty -a
하면 intr
신호에 연결된 키 시퀀스를 확인할 수 있습니다 . 아마도 CTRL-C그럴 것이지만 그 키 시퀀스는 완전히 다른 것에 매핑 될 수 있습니다.
다음 스크립트 프로그램이 작업에 (불구 TERM
보다는 INT
이후 sleep
에 반응하지 않는 INT
내 환경에서)
#!/usr/bin/env bash
sleep 3600 &
pid=$!
sleep 5
echo ===
echo PID is $pid, before kill:
ps -ef | grep -E "PPID|$pid" | sed 's/^/ /'
echo ===
( kill -TERM $pid ) 2>&1
sleep 5
echo ===
echo PID is $pid, after kill:
ps -ef | grep -E "PPID|$pid" | sed 's/^/ /'
echo ===
기본적으로 시간 로그 sleep
프로세스를 시작 하고 프로세스 ID를 가져옵니다. 그런 다음 프로세스를 종료하기 전에 관련 프로세스 세부 정보를 출력합니다.
After a small wait, it then checks the process table to see if the process has gone. As you can see from the output of the script, it is indeed gone:
===
PID is 28380, before kill:
UID PID PPID TTY STIME COMMAND
pax 28380 24652 tty42 09:26:49 /bin/sleep
===
./qq.sh: line 12: 28380 Terminated sleep 3600
===
PID is 28380, after kill:
UID PID PPID TTY STIME COMMAND
===
You can get the PID of a particular process like MySQL by using following commands: ps -e | pgrep mysql
This command will give you the PID of MySQL rocess. e.g, 13954 Now, type following command on terminal. kill -9 13954 This will kill the process of MySQL.
pgrep -f process_name > any_file_name
sed -i 's/^/kill /' any_file_name
chmod 777 any_file_name
./any_file_name
for example 'pgrep -f firefox' will grep the PID of running 'firefox' and will save this PID to a file called 'any_file_name'. 'sed' command will add the 'kill' in the beginning of the PID number in 'any_file_name' file. Third line will make 'any_file_name' file executable. Now forth line will kill the PID available in the file 'any_file_name'. Writing the above four lines in a file and executing that file can do the control-C. Working absolutely fine for me.
ReferenceURL : https://stackoverflow.com/questions/5789642/how-to-send-controlc-from-a-bash-script
'Programing' 카테고리의 다른 글
학습 알고리즘 및 데이터 구조 기초 (0) | 2021.01.08 |
---|---|
C # if-null-then-null 식 (0) | 2021.01.08 |
localStorage에서 삭제 : delete 또는 .removeItem을 사용해야합니까? (0) | 2021.01.08 |
C #으로 단일 책임 원칙 학습 (0) | 2021.01.08 |
메서드에서 명시 적으로 void를 반환 할 수없는 이유는 무엇입니까? (0) | 2021.01.08 |