TL; DR : 또는 더 나은 것을 사용하십시오 .sudo -b
openvpn [...] --daemon
실행중인 이후 openvpn
(당신이 프로그램을 실행하고자하기 때문에, 덜 구체적으로, 그리고 루트로 백그라운드에서) 상황을 해결하지 않는 백그라운드에서 명령을 실행하는 방법에 대한 가장 일반적으로 분배 정보를 제공합니다. 당신은 말했다 :
cpenvpn 명령에 &를 추가하고 그 앞에 nohop을 배치하려고했습니다. 둘 다 작동하지 않습니다.
당신의 명령은 다음과 같습니다
sudo openvpn ~/my_connection.ovpn
아래 sudo
는 최근에 비밀번호를 입력하지 않은 경우의 기본 구성 sudo
(상호 작용 사용, 일반적으로이 수단 같은 터미널) 같은 맥락에서 다음 비밀번호를 요청합니다. 그러나 추가하여 백그라운드에서 명령을 실행하면 라인 &
이 표시 되거나 입력 할 수있는 기회가 주어 지지 않습니다 .[sudo] password for user:
따라서이 상황에서 대화식 사용을 위해 명령을 실행하고 암호를 입력 한 후 백그라운드로 전송하는 것이 합리적인 방법 입니다.
그러나 이것이 유일한 방법은 아니며 스크립트에서 그렇게하고 싶지 않습니다 .
방법 1 :sudo
신선한 타임 스탬프가 있는지 확인하십시오 .
sudo
먼저 다음을 실행하여 명령을 실행하는 데 사용될 때 현재 시간 소인이 있는지 확인할 수 있습니다 .
sudo -v
그런 다음 다음을 실행할 수 있습니다.
sudo openvpn ~/my_connection.ovpn &
그러나을 사용하여 백그라운드에서 명령을 실행하려는 경우 일반적으로 피하는 것이 좋습니다 &
(및 nohup
) sudo
. 이것은 특히 스크립팅의 경우입니다.
방법 2 : 사용 sudo -b
. 일반적으로 이것은 일반적으로 원하는 것입니다.
대신, sudo
포 그라운드에서 자체적으로 실행할 수 있지만 -b
플래그를 전달하면 백그라운드 sudo
에서 명령이 실행됩니다.
sudo -b openvpn ~/my_connection.ovpn
특히 스크립트에 명령을 넣는 경우 더 나은 방법입니다. 으로 sudo -b
당신이하지 않는 작업 제어를 하지만, 쉘 스크립트 작업 제어에서 기본적으로 사용 불가능하며, 당신은 일반적으로 그것을 사용하지 말아야합니다 .
man sudo
설명 대로 :
-b, --background
Run the given command in the background. Note that it is not
possible to use shell job control to manipulate background
processes started by sudo. Most interactive commands will
fail to work properly in background mode.
sudo가 암호를 수신 한 후 (필요한 경우) 명령을 실행할 수 있다고 판단 할 때까지 백그라운드에서 아무것도 실행되지 않기 때문에이 기능이 작동합니다 .
방법 3 : 그러나에 대해서는 openvpn
아마도로 실행해야합니다 --daemon
.
openvpn
--daemon
옵션 으로 실행하면 백그라운드에서 자동으로 실행됩니다 .
sudo openvpn ~/my_connection.ovpn --daemon
합격 --daemon
하여 후 .opvn
파일 이름보다는 전에; 다음의 인수 --daemon
는있는 경우, 데몬 openvpn
처리 된 프로세스가 사용해야 하는 이름으로 해석됩니다 . (수행 하지 APPEND도 &
.)
이것이 적절한 지 아닌지는 상호 작용 openvpn
이 실행 된 후 이지만 데몬을 초기화하기 전에 발생해야하는지 여부에 따라 다릅니다 . 그리고 그것은 부분적으로에 설정된 내용에 달려 있습니다 ~/my_connection.ovpn
. 그러나 즉시 디먼을 실행할 수 없다면 openvpn
백그라운드에서 즉시 실행하는 다른 모든 방법도 중단됩니다 .
따라서 백그라운드에서 실행 openvpn
을 시작 하고 전경으로 다시 가져오고 싶지 않다는 것을 알고 있는 상황에서는 --daemon
옵션을 사용하여 호출하는 방법을 고려해야합니다 . 이에 특정 openvpn
지원하지 않는 --most 프로그램이 --daemon
많은 서버 프로그램 일부 같은 옵션이있다하더라도, 옵션을 선택합니다. 그러나 이름과 구문은 다릅니다.
이 옵션을 사용 (당신이 그것을 사용하는 방법), 난 당신이 읽고 추천 여부를 결정하려면 매뉴얼 페이지를 특히 섹션에, . 유용한 정보가 많이 있으며 여기에 첫 번째 단락 만 인용합니다.openvpn
--daemon
--daemon [progname]
Become a daemon after all initialization functions are
completed. This option will cause all message and error output
to be sent to the syslog file (such as /var/log/messages),
except for the output of scripts and ifconfig commands, which
will go to /dev/null unless otherwise redirected. The syslog
redirection occurs immediately at the point that --daemon is
parsed on the command line even though the daemonization point
occurs later. If one of the --log options is present, it will
supercede syslog redirection.
The optional progname parameter [...]
방법 4 : 때로는 전체 스크립트를 루트로 실행하는 것이 합리적입니다.
루트로 여러 작업을 수행하는 스크립트가있는 경우 루트가 아닌 합리적으로 실행되는 중요한 활동이 없으며 루트가 아닌 사용자로 스크립트를 실행하면 아무런 도움이되지 않습니다. 스크립트 사용자는 루트로 실행해야합니다.
이 경우 sudo
스크립트의 명령에서 제거해야합니다 . 스크립트가 루트로 실행될 때 필요가 없습니다 sudo
. (루트 사용자 수 있지만, 기본적으로 자신을 포함하여 모든 사용자가 같은 명령을 실행 sudo
하고 그렇게하기 위해 암호를 필요로하지 않는다. 그래서 당신이 경우에 할 의 휴가 인스턴스 sudo
다음 스크립트는 것입니다 아마 여전히 일을.)
당신의 인스턴스가있는 경우 sudo
실제로 루트가 아닌 (일부 다른 사용자로 명령을 실행하는 데 사용되는 스크립트를 ), 당신은 여전히 유지해야 하는 인스턴스를.-u user
전체 스크립트가 루트로 실행되는 경우 백그라운드에서 명령을 실행하는 일반적인 방법의 대부분은 추가 &
및 필요한 경우 nohup
(이미 알고 있음) 사용을 포함하여 적용됩니다 . 그러나이를 위해서는 여전히 옵션 openvpn
과 함께 사용 하는 것이 --daemon
좋습니다.