
두 개의 작업이 bash 명령줄에 세미콜론으로 구분되어 입력된 경우:
$ job 1; job 2;
두 번째 취소는 어떻게 하나요? CTRL+를 누르면 c첫 번째 작업이 취소되고 '작업 2'가 시작되는데, 두 번째 작업이 실행되지 않도록 중지하고 싶습니다. atq, ps를 시도했지만 운이 없었습니다. ps -ef를 사용하면 'job 1'만 볼 수 있지만 'job 2'는 나열되지 않으므로 kill을 사용하기 위해 PID를 얻을 수 없습니다. ; 대신 &&를 사용할 수 있다는 것을 알고 있습니다. 하지만 지금은 너무 늦었습니다. 집에 있는 PC가 아닌 서버에서 실수로 이 명령을 실행하여 재난을 방지할 수 있는 방법을 모색 중입니다.
이 문제는 rsync 명령 뒤에 다른 명령이 오는 경우에만 발생합니다.
$ rsync ..... ; sudo shutdown -h now
ID로 프로세스를 종료하거나 해당 프로세스의 부모를 종료하면 작동하지 않습니다.
몇 시간 동안 테스트한 후 rsync로 격리했습니다. 다른 명령은 다양한 순서로 CTRL+ 로 종료할 수 있지만 crsync 또는 ping과 같은 일부 명령 뒤에 있는 경우에는 그렇지 않습니다. Sudo 사용자 없이 다른 Ubuntu 버전, 커널, 서버를 시도했습니다. 이 문제를 피하는 가장 좋은 방법은 rsync 후에 &&를 사용하여 성공 종료 코드 0에서만 다음 명령을 실행하는 것입니다.
$ rsync .... && job 2
답변1
죽여라상위 프로세스Job1의 SIGKILL
.
프로세스 트리에 프로세스를 표시합니다. htop
or 로 ps axf
그리고 죽여라job1의 상위 프로세스job1 자체는 아닙니다.
htop
다음으로 설치
sudo apt-get install htop
반대 투표자 여러분, 반대 투표하기 전에 답변을 이해하세요
답변2
뭔가 놓친 것 같아요. 로 구분된 두 개의 명령을 실행하면 + ;
로 두 명령을 모두 종료할 수 있습니다 .CTRLc
확실히 하려면 다음 명령을 시도해 보세요.
find / -name a ; ls /home
CTRL그런 다음 + 를 사용하여 위 명령을 종료하면 c두 프로세스가 모두 종료되므로 홈 콘텐츠가 나열되지 않습니다. 즉, 다음 명령이 실행되지 않습니다.
업데이트:이는 귀하의 명령에도 유효합니다 rsync
. 여기 내 예가 있습니다:
$ rsync -avz /var/cache/apt/archives/ /tmp/backups/ ; sudo shutdown -h now
sending incremental file list
created directory /tmp/backups
./
authbind_1.2.0build3_amd64.deb
................
^Crsync error: received SIGINT, SIGTERM, or SIGHUP (code 20) at rsync.c(549) [sender=3.0.9]
[sudo] password for user:
CTRL위에서 볼 수 있듯이 +를 실행하면 c첫 번째 명령이 종료되고 종료를 시작하는 동안 비밀번호를 묻는 메시지가 표시되므로 이제 +를 다시 sudo
사용하여 두 번째 프로세스를 종료할 수 있습니다 .CTRLc
업데이트 2문제에 대한 해킹으로 다음을 수행할 수 있습니다.
- 비밀번호 없는 기능을 사용하고 있으므로 sudoer 파일을 편집하여 비밀번호를
sudo
다시 요청하세요.sudo
sudo visudo
- 아무것도 작동하지 않으면 마지막 단계로그냥 해킹이고 권장되지 않습니다명령 을 편집
/sbin/shutdown
하여 제거+x
하거나 다른 이름으로 이름을 바꾸십시오.