이것은 Ask Ubuntu에 대한 첫 번째 질문이므로 양해해 주셔서 미리 감사드립니다.
내 상황은 다음과 같습니다. *.desktop
쉘 스크립트를 실행하는 파일(내가 작성한)이 있습니다. 나의 초기 의도는 ~/.config/autostart
시작 시 자동으로 실행되도록 이 파일을 배치하는 것이었습니다 . 그러나 이로 인해 Ubuntu는 잠시 동안 데스크탑을 플래시한 다음 다시 로그아웃합니다. 데스크탑에서 파일을 두 번 클릭하면 예상한 대로 스크립트가 실행됩니다. *.desktop
파일을 디렉토리에서 꺼내 문자 ~/Desktop
그대로 다른 곳에 두는 경우에도 노틸러스에서 해당 파일을 두 번 클릭하면 즉시 로그아웃됩니다.
파일 은 에서 *.desktop
시작하는 쉘 스크립트를 실행하도록 설정되어 있습니다 . 내가 이렇게 하는 이유가 반드시 중요한 것은 아니므로, 그것이 나에게 필요한 방식이라고 가정해 주십시오. 첫 번째 쉘 스크립트의 시작 부분에 추가하면 시작 방법에 관계없이 파일을 시작한 지 10초 후에 로그아웃됩니다 . 문제는 두 번째 스크립트에서 새 창이 시작된다는 사실에 있는 것 같지만 이것이 어떻게, 왜 발생하는지 이해하지 못합니다. 데스크탑 항목:bash
gnome-terminal
sleep 10
*.desktop
gnome-terminal
[Desktop entry]
Name=Autocapture
Comment=Starts autocap program
Exec=/Autocapture/Startup/InitSystem
Terminal=false
Type=Application
초기화시스템:
#!/bin/bash
nohup gnome-terminal --title=Autocapture --maximize -e "bash -c 'bash /Autocapture/Startup/StartAutocap.sh';bash"
wmctrl -a "Autocapture" # Give focus to new terminal window
kill -9 $PPID # Close this terminal
StartAutocap.sh:
#!/bin/bash
source /usr/local/bin/virtualenvwrapper.sh
workon Autocap
python /path/to/python/module.py
gnome-terminal
이는 전체 화면 창 실행을 시작하고 해당 bash 세션에서 bash
" " 프로그램을 시작 하는 것으로 가정됩니다(데스크톱에서 실행하는 경우 성공적으로 실행됩니다) . module.py
또한 gnome-terminal
하위 프로세스를 시작하고 분리한 첫 번째 창을 닫습니다.
첫 번째 게시물이 엄청나게 길어서 죄송합니다. 여기서 무엇이 잘못되었는지, 어떻게 해결할 수 있는지 알고 싶습니다. 어떤 도움이라도 대단히 감사하겠습니다!
답변1
나는 이론을 가지고 있지만 이것이 어떻게, 왜 작동하는지 정확히 (또는 원격으로) 알고 있다고 선언하는 것이 두렵습니다. 나는 그것이 *.desktop
런처가 목표물을 실행하는 방식과 관련이 있다고 생각합니다 . 아마도 스크립트 실행이 끝날 때 이미 닫혀서 내 세션이 종료된 후 그놈 터미널 창을 종료하려고 했던 것일까요? 어쩌면 그 반대일까요? 나는 안다고 주장하지는 않지만, 아는 사람이라면 누구든지 초대하고 싶습니다.당신의 설명과 함께 이 질문에 대답해주세요다른 사람들이 내 실수로부터 배울 수 있도록.
줄을 제거하면 kill -9 $PPID
문제가 해결되었습니다.
실행 프로그램 에서 스크립트를 실행하면 *.desktop
첫 번째 gnome-terminal
창이 닫히고 두 번째 창이 남습니다. 명령줄(예: $ bash InitSystem
)에서 스크립트를 실행하면 초기 gnome-terminal
창이 닫히지 않습니다.