루트가 아닌 사용자가 "서비스"를 실행하는 메커니즘이 있습니까?

루트가 아닌 사용자가 "서비스"를 실행하는 메커니즘이 있습니까?

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

내가 할 수 있는 일은 프로세스를 시작하고, 중지하고, 다시 시작하는 것뿐입니다. 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" 패턴과 일치하는 프로세스 이름으로 신호를 보냅니다 . 다시 확인해보니 이제 사라진 것으로 나타났습니다.

관련 정보