이제 systemd에 답이 있습니다.

이제 systemd에 답이 있습니다.

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초보자에게 복잡한 환경 변수 및 기타 문제에 대해서도 언급하지 않았습니다 . 어쨌든, 이것들은 다른 질문에 대한 주제입니다. 그래서 나는 그것을 그대로 두겠습니다.

추가 읽기

답변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

zenityAskpass 도우미 로 사용하는 예입니다.

관련 정보