나(루트가 아닌 일반 사용자)가 지속적으로 실행되는 백그라운드 프로세스를 제어할 수 있는 방법이 있습니까?
내가 해야 할 일은 프로세스를 시작하고, 중지하고, 다시 시작하는 것뿐입니다. PID를 통해 모니터링하고 SIGHUP 또는 SIGINT를 보내 종료하면 됩니다. 복잡한 bash 스크립트를 사용할 수 있으며 시스템 전체 스크립트일 필요는 없습니다. 단지 나를 위해.
SSH에서 로그아웃할 때 멈추지 않도록 하는 것도 정말 필요합니다.
RHEL 6.4에서 이를 수행할 수 있는 방법이 있습니까?
답변1
스크린 또는 tmux
물론, screen이나 tmux와 같은 터미널 멀티플렉서를 사용하여 프로세스를 시작한 다음 계속해서 실행할 수도 있습니다. 프로세스는 screen 또는 tmux 세션에 남아 있을 수 있으며 필요에 따라 (screen 또는 tmux)에 연결/연결 해제할 수 있습니다.
배경
원하는 프로세스를 실행하고 백그라운드에 둔 다음 명령을 사용하여 현재 터미널에서 연결을 끊을 수 있습니다 disown
.
$ disown -a
또한 프로세스를 백그라운드에 두지 않고 프로세스를 시작하려는 경우에도 disown
이 명령을 사용할 수 있습니다 nohup
.
$ nohup myexec &
쉘이 종료되면 myexec
계속 실행됩니다.
예
가짜 프로세스를 시작합니다.
$ sleep 12345 &
[1] 24339
$
우리가 볼 수 있는지 확인하세요:
$ pgrep -f "sleep 12345"
24339
하지만 여전히 터미널에 연결되어 있습니다.
$ jobs
[1]+ Running sleep 12345 &
disown
그럼 시작해 보겠습니다 .
$ disown -a
$ jobs
$
아직 실행 중인지 확인하세요.
$ pgrep -f "sleep 12345"
24339
이제 로그아웃했다가 다시 로그인해 보겠습니다. 아직 거기에 있는지 확인하십시오.
$ pgrep -f "sleep 12345"
24339
표준 방법을 사용하면 언제든지 이 프로세스를 종료할 수 있습니다.
$ pkill -HUP -f "sleep 12345"
$ pgrep -f "sleep 12345"
$
HUP
위 코드는 "sleep 12345" 패턴과 일치하는 프로세스 이름으로 신호를 보냅니다 . 자세히 살펴보니 지금은 없어졌습니다.