답변:
두 -c
매개 변수 ( su
및 bash
)는 최소한 인용해야 한다고 생각합니다 .
su - username -c "/usr/bin/screen -dmS test bash -c '/var/www/path/to/script/script.sh; exec bash'"
또한 -
마지막 일 것으로 예상되며 여기서 바람직하지 않을 수 있습니다 (참조 man su
).
몇 가지 더 언급합니다. sudo
수 더 나은 당신처럼 원샷 명령에 대한 선택, 그러나 반드시 수 :
sudo -iu username /usr/bin/screen -dmS test bash -c '/var/www/path/to/script/script.sh; exec bash'
특히로 인용 부호를 적게 사용할 수 있습니다 sudo
.
주의해야 할 또 다른 사항은 권한있는 컨텍스트에서 절대 경로없이 명령을 실행하는 것입니다. 이것은 su
(또는 sudo
)뿐만 아니라 bash
명령 의 경로를 유지 합니다. 당신은 바로 그것을하고 있습니다 screen
.
다음을 테스트하고 제대로 작동합니다. -
원래 줄의 주요 문제 라고 생각합니다 .
/bin/su username -c "/usr/bin/screen -dmS test bash -c '/home/username/test.sh; exec bash'"
사악한 말 :tmux
시도해 보지 않겠 습니까? 나는 최근에 전환했고 결코 뒤돌아 보지 않았다. 내가 즉시 변경해야하는 유일한 것은 접두사 키 조합으로 tmux
기본적 으로 GNU 의 + 로 Ctrl+ B-다시 설정되었습니다 .screen
CtrlA
창을 거의 임의의 수의 창 (수직 및 수평) 으로 분할 할 수 있으며 구성 파일 형식 (상태 파에 대한 형식 포함)은 실제로 사람이 이해할 수 있습니다. 물론 원래 백그라운드에서 데몬으로 쓰여지지 않은 일부 프로그램 / 스크립트를 단순히 실행하려는 경우 tmux
만큼 좋습니다 screen
. 그러나 터미널 멀티플렉서와 상호 작용하려면 따뜻하게 권장 tmux
합니다.
sudo
이미 로그인 한 곳인 rc.local에서 실행한다면 로그인 쉘이 빠지기 때문에 좋은 선택이 아닙니다. 참고로 /etc/init/tty1.conf
여기에서 [a] getty를 화면으로 바꿉니다.
sudo su -
... sudo
(슈퍼 유저), su
(사용자 전환) ... .conf에 대한 좋은 생각
sudo
사용하여 로그인 쉘을 잘 시작할 수 있습니다 -i
.
내가 사용한 것은 다음과 같습니다. 가장 깨끗하고 가장 단순하다는 것을 알았습니다.
"user"를 사용자로 바꾸어 실행하십시오. 스크린 세션 이름으로 "nameyouchoose"를 바꾸십시오. "/script/start.bash"를 스크립트 경로로 바꾸십시오.
/usr/bin/sudo -u user /usr/bin/screen -dmS nameyouchoose /script/start.bash
su
또는sudo
?