루트가 아닌 사용자가 "서비스"를 실행할 수 있도록 하는 메커니즘이 있습니까? [복사]

루트가 아닌 사용자가 "서비스"를 실행할 수 있도록 하는 메커니즘이 있습니까? [복사]

나(루트가 아닌 일반 사용자)가 지속적으로 실행되는 백그라운드 프로세스를 제어할 수 있는 방법이 있습니까?

내가 해야 할 일은 프로세스를 시작하고, 중지하고, 다시 시작하는 것뿐입니다. 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" 패턴과 일치하는 프로세스 이름으로 신호를 보냅니다 . 자세히 살펴보니 지금은 없어졌습니다.

관련 정보