Ubuntu 15.04에는 다음 파일이 있습니다./usr/local/bin/myscript(제가 만든 스크립트입니다.)
내 계정에서 이 명령을 실행하면 루트로 수행하는 데 필요한 작업이 수행됩니다.sudo /usr/local/bin/myscript
지금 하고 싶어요/usr/local/bin/myscript컴퓨터가 시작될 때 루트로 실행됩니다(비밀번호를 입력하지 않고 sudo 명령을 실행하는 것처럼). Ubuntu 15.04에서는 어떻게 수행됩니까?
답변1
이제 systemd에 답이 있습니다.
Ubuntu 버전 15를 사용하고 있습니다. 당신은 체계화했습니다. /etc/rc.local
기껏해야 systemd의 이전 버전과의 호환성 메커니즘입니다. 아래 하이퍼링크로 연결된 AskUbuntu 질문에 표시된 엉망진창을 사용하면 끔찍하게 잘못될 수 있습니다. 따라서 적절한 시스템 서비스 단위를 생성하십시오.
/etc/systemd/system/
로컬, 비시스템, 비패키지 서비스 단위를 생성하므로 해당 유형의 단위가 있는 곳에 단위 파일이 위치하게 됩니다 . 그냥 그렇게 부르자 /etc/systemd/system/myscript.service
. 여기에는 다음이 포함됩니다.
[단위] 설명=user2580에 대한 스크립트 문서=https://unix.stackexchange.com/questions/202698/ [제공하다] 유형=단순 ExecStart=/usr/local/bin/myscript [설치하다] WantedBy=다중 사용자.대상
스크립트가 "데몬용"으로 분기하는 경우 그렇게 하지 않도록 방지하세요. 그것은 완전히 불필요합니다.
systemctl preset myscript.service
부팅 시 자동으로 시작되도록 하려면 슈퍼유저로 실행하세요 .systemctl start myscript.service
수동으로 시작하려면 지금 실행 (수퍼유저로)하세요.- 실행
systemctl status myscript.service
하여 상태를 확인하세요.
X 서버와 통신할 수 있는 컨텍스트에서는 스크립트가 실행되지 않습니다. X 서버가 시작되기 전에도 실행할 수 있습니다. 하지만 X 클라이언트가 되기 위한 요구 사항에 대해서는 언급하지 않았으며, HOME
초보자에게 복잡한 환경 변수 및 기타 문제에 대해서도 언급하지 않았습니다 . 어쨌든, 이것들은 다른 질문에 대한 주제입니다. 그래서 나는 그것을 그대로 두겠습니다.
추가 읽기
- https://unix.stackexchange.com/a/200281/5132
- 조나단 드보인 폴라드(2001). "단순히 "데몬을 배경에 놓기" 위해 포크()를 사용하지 마세요.". Unix 데몬을 설계할 때 피해야 할 실수. 일반적인 답변.
답변2
.NET에서 스크립트를 호출하는 줄을 추가하기만 하면 됩니다 /etc/rc.local
. 이 파일은 마지막 init 스크립트 실행입니다.
/etc/rc.local
실행 가능하고 루트가 소유하고 있는지 확인하세요 .
답변3
당신은 그것을 사용할 수 있습니다gksudo
:-
NAME
gksu - GTK+ frontend for su and sudo
DESCRIPTION
gksu is a frontend to su and gksudo is a frontend to sudo. Their primary purpose is to run graphical commands
that need root without the need to run an X terminal emulator and using su directly.
- 시작 앱을 엽니다(시스템 설정 > 시작 앱 또는
gnome-session-properties
). - 다음 명령을 사용하여 새 항목을 추가합니다(
gksudo myscript
또는gksudo /usr/local/bin/myscript
):-
추가를 클릭하면 데스크톱을 시작/로그인할 때 이 스크립트가 실행됩니다.
노트:-gksu
사용하기 전에 설치되었는지 확인하십시오 gksudo
. (를 통해 설치할 수 있습니다 sudo apt-get install gksu
)
또 다른 방법은 다음과 함께 작동하는 Askpass 프로그램을 사용하는 것입니다 sudo -A
.
-A, --askpass
Normally, if sudo requires a password, it will read it from the user's terminal. If the -A
(askpass) option is specified, a (possibly graphical) helper program is executed to read the user's
password and output the password to the standard output. If the SUDO_ASKPASS environment variable
is set, it specifies the path to the helper program. Otherwise, if sudo.conf(5) contains a line
specifying the askpass program, that value will be used. For example:
# Path to askpass helper program
Path askpass /usr/X11R6/bin/ssh-askpass
zenity
Askpass 도우미 로 사용하는 예입니다.