今systemdに答えがあります。

今systemdに答えがあります。

仕事:openSUSEマシンから起動時にChromiumを起動します。

質問:問題はGUIプログラムを起動したいと思います。

これまで:

Mon Aug 14; 06:45:00; marton;/etc/systemd ;  $  
Mon Aug 14; 06:45:00; marton;/etc/systemd ;  $  ls -l
total 24
-rw-r--r-- 1 root root  529 Mar 15 07:20 bootchart.conf
-rw-rw-r-- 1 root root  138 Aug 14 06:34 chorm_start.service
-rw-r--r-- 1 root root  768 Mar 15 07:20 journald.conf
-rw-r--r-- 1 root root  709 Mar 15 07:20 logind.conf
drwxr-xr-x 1 root root  772 Aug 14 05:16 system
-rw-r--r-- 1 root root 1196 Mar 15 07:20 system.conf
drwxr-xr-x 1 root root    0 Mar 15 07:20 user
-rw-r--r-- 1 root root  992 Mar 15 07:20 user.conf
Mon Aug 14; 06:45:00; marton;/etc/systemd ;  $  sudo chmod 664 chorm_start.service 
root's password:
Mon Aug 14; 06:45:19; marton;/etc/systemd ;  $  ls -l
total 24
-rw-r--r-- 1 root root  529 Mar 15 07:20 bootchart.conf
-rw-rw-r-- 1 root root  138 Aug 14 06:34 chorm_start.service
-rw-r--r-- 1 root root  768 Mar 15 07:20 journald.conf
-rw-r--r-- 1 root root  709 Mar 15 07:20 logind.conf
drwxr-xr-x 1 root root  772 Aug 14 05:16 system
-rw-r--r-- 1 root root 1196 Mar 15 07:20 system.conf
drwxr-xr-x 1 root root    0 Mar 15 07:20 user
-rw-r--r-- 1 root root  992 Mar 15 07:20 user.conf
Mon Aug 14; 06:45:20; marton;/etc/systemd ;  $  cat chorm_start.service                      
[Unit]                                                                                       
Description="Starting chromium on startup"                                                   

[Service]                                                                                    
ExecStart=/usr/lib64/chromium/chromium                                                       

[Install]                                                                                    
WantedBy=multi-user.target                                                                   
Mon Aug 14; 06:45:38; marton;/etc/systemd ;  $  sudo systemctl status chorm_start
chorm_start.service - "Starting chromium on startup"                                         
   Loaded: loaded (/etc/systemd/chorm_start.service; enabled)                                
   Active: failed (Result: exit-code) since Mon 2017-08-14 06:38:44 EEST; 7min ago           
  Process: 853 ExecStart=/usr/lib64/chromium/chromium (code=exited, status=1/FAILURE)
 Main PID: 853 (code=exited, status=1/FAILURE)

Aug 14 06:38:47 date chromium[853]: Unable to init server: Could not connect: Connection refused
Aug 14 06:38:47 date chromium[853]: [853:853:0814/063844.727638:ERROR:browser_main_loop.cc(279)] Gtk: cannot open display:
Mon Aug 14; 06:46:35; marton;/etc/systemd ;  $  

質問:私は何が間違っていて、どのように解決するのですか?

ベストアンサー1

今systemdに答えがあります。

systemdを使ってこれを行う方法を尋ねられたからです。 ☺

これがシステム化された人々が人々にそうするように言う方法です。

サービス単位ファイルを正確に間違ったディレクトリに入れました。入ってはいけません/etc/systemd。入ってはいけません/etc/systemd/system。それは入るべきです~marton/.config/systemd/user

アカウントのサポートの下で実行したいグラフィックプログラムユーザーごとサービスではありませんシステム提供する。 (現在スーパーユーザーとしてWWWブラウザを呼び出しています。これは非常に悪い考えです。この練習を中止してください。! ) あなたできる次のように設定してください。みんなディレクトリ内のユーザー/etc/systemd/userですが、システム内のすべてのユーザーがChromiumをサービスとして起動する必要はありません。したがって、ユーザーアカウントに合わせて特別に設定してください。

ユーザー固有のサービスなので、sans--userオプションを使用して運営する必要があります。たとえば、systemctlsudo

systemctl -- ユーザー状態 chrome.service

これは有効化と無効化にも当てはまります。

ユーザー固有のサービス単位にはユーザー固有のサービスがWantedBy=default.targetないためです。multi-user.target(そうすべきだと思いますが、実際に使用しているデスクトップによって異なります。この点についてシステム化された人々が何を言っているのかは不明です。 )WantedBy=your-desktop-session.targetgnome-session.target

ユーザーがユーザーごとのサービスをログインセッションごとのサービスのように見せたいと思うsystemdの一部は、graphical-sessionサービスユニットが設定とマージされる必要がある完全なメカニズムです。

[単位]
PartOf=グラフィック session.target

その他のことは、graphical-sessionOpenSuSEが2016年から推進し始めたOpenSuSEの発展の方向によって異なります。 UbuntuとDebianは、GUIログインセッションを開始および終了するための複雑なビハインドシェルスクリプトセットを提供し、起動/停止および環境変数のgraphical-session.target注入を可能にします。DISPLAYOpenSuSEにまだこのエントリがない場合は、このセクションを作成する必要があります。

追加読書

おすすめ記事