Unity 로그인 / 로그 아웃에서 스크립트를 어떻게 실행합니까? 후) 마운트 스크립트를 시작하고 싶습니다-오른쪽

SSHFS를 통해 일부 폴더를 마운트하는 스크립트와 마운트 해제하는 스크립트가 있습니다.

기본 Ubuntu 데스크탑이 시작될 때 (그래픽 콘솔에 로그인 한 후) 마운트 스크립트를 시작하고 싶습니다-오른쪽 상단의 톱니 바퀴에서 “로그 아웃 …”할 때 마운트 해제 스크립트 데스크탑.

누군가 이것을 달성하는 방법을 말해 줄 수 있습니까? 데스크탑 실행 / 종료시 명령을 실행하는 가장 편리한 표준 후크는 무엇입니까?



답변

다른 로그인이 아닌 Unity에 로그인 할 때 작업을 실행해야한다는 점을 고려하면 Upstart 세션 작업 이 완벽 해 보입니다.

GUI 로그인 후 실행하는 init프로세스 는 두 번째 프로세스에 있습니다. 이는 init올바른 Upstart init이며 해당 이벤트에서 생성 된 이벤트를 기반으로 세션 작업을 시작 및 중지 할 수 있습니다. 루트 권한이 전혀 필요하지 않습니다. 더 나은 아직 (또는 관점에 따라 더 나쁘다), 이것은 헤드리스 시스템에서 아직 완전히 지원되지는 않습니다. SSH 로그인이 지금 막 만든 빠른 테스트에서 사용자 init를 시작하지 않았습니다.

세션 작업을 만들려면에서 새 .conf파일을 만드십시오 ~/.config/upstart. 이것이 Upstart 세션 작업 ( $XDG_CONFIG_HOME/upstart) 의 기본 기본 디렉토리입니다 ( 없는 경우). 다음은 작업 예입니다.

tee ~/.config/upstart/myjob.conf <<EOF
description "My job"
start on desktop-start
stop on desktop-end

script 
       firefox 'http://upstart.ubuntu.com/cookbook/#session-job'
end script
EOF

수동으로 제어 할 수 있습니다.

start myjob 
# or
initctl start myjob

service명령은 시스템 작업 ( /etc/init.d또는 in /etc/init) 을 제어하는 ​​데 사용됩니다 . 세션 작업을 제어하려면 initctlUpstart와 상호 작용하는 데 사용되는 명령 을 사용해야합니다 .

man upstart-events사용할 수있는 더 많은 이벤트를 참조하십시오 .


답변

해결책은 시작 작업을 사용하는 것이 었습니다. 두 가지 작업이 필요했습니다. 하나는 사용자가 데스크톱을 초기화 할 때 발생합니다. 두 번째는 사용자 세션이 만료 될 때입니다. 다음 두 스크립트는 Ubuntu 14.04에서 작동합니다.

~ / .config / upstart / desktopOpen.conf에서

description "Desktop Open Task"
start on desktop-start
task
script
# Commands to mount sshfs go here as shell-script.
end script

~ / .config / upstart / desktopClose.conf에서

description "Desktop Close Task"
start on session-end
task
script
# Commands to unmount sshfs go here as shell-script.
end script

이러한 이벤트가 향후 Ubuntu 릴리스의 요구 사항을 계속 충족 할 것이라고 생각합니다. 다른 사람들이 사용할 수 있도록 여기에 솔루션을 게시 할 가치가 있다고 생각했습니다.


답변

로그인 후 스크립트를 실행하기위한 제안 사항은 다음과 같습니다.

부팅 후 StackOverflow Linux 스크립트 : Cliff 노트는 * .sh 파일을 /etc/profile.d에 넣습니다.

부팅 할 때 스크립트를 실행하려면 다음을 수행하십시오.

부팅 후 StackOverflow Linux 스크립트 : Cliff 노트는 /etc/rc.local 또는 crontab을 사용하는 것입니다.