これは Ask Ubuntu での最初の質問ですので、お待ちいただけることをあらかじめ感謝いたします。
私の状況はこうです。*.desktop
シェル スクリプトを実行するファイル (自分で書いたもの) があります。当初の意図は、このファイルを配置して~/.config/autostart
起動時に自動的に実行されるようにすることでしたが、これにより Ubuntu がデスクトップを一瞬フラッシュし、その後ログアウトしてしまいます。デスクトップでファイルをダブルクリックすると、スクリプトが想定どおりに起動します。ファイルをディレクトリ*.desktop
から取り出して~/Desktop
文字通り他の場所に置くと、Nautilus でダブルクリックしてもすぐにログアウトしてしまいます。
ファイルは、で*.desktop
始まるシェル スクリプトを実行するように設定されています。これを行う理由は必ずしも重要ではないので、必要な方法であると想定してください。最初のシェル スクリプトの先頭に追加すると、ファイルの開始方法に関係なく、ファイルの開始から 10 秒後にログアウトされます。問題は、2 番目のスクリプトから新しいウィンドウが開始されることにあるようですが、これがどのように、またはなぜ起こるのか理解できません。デスクトップ エントリ: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
Autocap.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
ターゲットを実行する方法と関係があるのではないかと思う。おそらく、スクリプトの実行終了時に既に閉じられていたgnome-terminalウィンドウを終了しようとして、セッションを終了させてしまったのだろうか?その逆だろうか?私は知っているとは言わないが、知っている人はぜひこの質問にあなたの説明とともに答えてください他の人が私の失敗から学べるように。
線を削除することでkill -9 $PPID
問題は解決しました
スクリプトがランチャーから実行されると*.desktop
、最初のgnome-terminal
ウィンドウが閉じて 2 番目のウィンドウが残ります。スクリプトがコマンド ライン (たとえば、$ bash InitSystem
) から実行されると、最初のgnome-terminal
ウィンドウは閉じません。