質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
86.12%
systemd

systemdは、Linuxの起動処理及びシステム管理を行う技術です。他にも多くのサービス管理機能を備えており、ユーザープロセスを並列に起動しシステムの起動処理に要する時間を短縮できるなどの特徴があります。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

Raspberry Pi

Raspberry Piは、ラズベリーパイ財団が開発した、名刺サイズのLinuxコンピュータです。 学校で基本的なコンピュータ科学の教育を促進することを意図しています。

受付中

ラズパイでプログラムを自動起動したいが、cannot connect to X server エラーが発生

nao99
nao99

総合スコア10

systemd

systemdは、Linuxの起動処理及びシステム管理を行う技術です。他にも多くのサービス管理機能を備えており、ユーザープロセスを並列に起動しシステムの起動処理に要する時間を短縮できるなどの特徴があります。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

Raspberry Pi

Raspberry Piは、ラズベリーパイ財団が開発した、名刺サイズのLinuxコンピュータです。 学校で基本的なコンピュータ科学の教育を促進することを意図しています。

1回答

0リアクション

2クリップ

4641閲覧

投稿2020/08/24 08:18

編集2020/08/25 08:25

【実現したいこと】
ラズパイ起動時に、pythonプログラムを自動起動したい。

【発生している問題】
ログで、cannot connect to X server とエラーが発生するが、対処方法が分からない。

pi@raspberrypi:~ $ sudo systemctl start autostart.service
pi@raspberrypi:~ $ sudo systemctl status autostart.service
● autostart.service - do something
Loaded: loaded (/etc/systemd/system/autostart.service; enabled; vendor preset: enabled)
Active: failed (Result: exit-code) since Mon 2020-08-24 15:24:53 JST; 9s ago
Process: 2547 ExecStart=/home/pi/mause_xy.py (code=exited, status=1/FAILURE)
Main PID: 2547 (code=exited, status=1/FAILURE)

8月 24 15:24:52 raspberrypi systemd[1]: Started do something.
8月 24 15:24:53 raspberrypi mause_xy.py[2547]: : cannot connect to X server
8月 24 15:24:53 raspberrypi systemd[1]: autostart.service: Main process exited, code=exited, status=1/FAIL
8月 24 15:24:53 raspberrypi systemd[1]: autostart.service: Failed with result 'exit-code'.

【サービスファイル】
autostart.service

[Unit] Description=do something [Service] ExecStart=/home/pi/mause_xy.py [Install] WantedBy=multi-user.target

【やったこと】
ここに至る迄、いくつかのエラーが発生し、以下の対応を行った。
①permission error処置

cdmod 777 /home/pi/mause_xy.py

で、アクセス権を設定した。

②Exec format error
python ファイルの1行目に

#!/usr/bin/python3

を追記した。

③No such file or directory・・・・
改行コード修正のため、

sed -i 's/\r//' /home/pi/mause_xy.py

で修正を行った。

その結果、現在の状況となった。

ここまで来て進めなくなりました。

アドバイス宜しくお願いします。

以下のような質問にはリアクションをつけましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

リアクションが多い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

下記のような質問は推奨されていません。

  • 間違っている
  • 質問になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

適切な質問に修正を依頼しましょう。

yasutakatou

2020/10/14 08:14 編集

コンソールからログインしてmouse_xy.pyを動作させると意図通り動くのですよね? であればX Server起動まで待たせるように変更してみては如何でしょうか。 [Unit]にAfter=graphical.targetを追記してみてください。 すみませんがこちらの記事にありますようにあらかじめXserverのサービス名を確認した方が良いです。 ディストリビューションごとに違う可能性がありえます https://qastack.jp/superuser/759759/writing-a-service-that-depends-on-xorg
nao99

2020/10/15 05:30

ご回答有難うございます。 [Unit]に、After=graphical.target を追記してみましたが、変化ありませんでした。 X serverのサービス名を調べたいのですが、graphical.target とは、GUI環境のこと、X serverはGUI環境ということでしょうか。調べ方もよくわかっていません。
yasutakatou

2020/10/15 05:44

>コンソールからログインしてmouse_xy.pyを動作させると意図通り動くのですよね? これは確認済みですよね。であればX11は自動起動で動いているので systemctl get-default で確認したターゲットをAfter=に書けば良さそうです。 または.timerというファイルを作って、起動後一定時間経ったあとに動かすこともできそうです。 https://unix.stackexchange.com/questions/397853/how-to-set-a-systemd-unit-to-start-after-loading-the-desktop
nao99

2020/10/15 07:22

コンソールから、mouse_xy.pyの動作は問題なく動作します。 systemctl get-default で確認しましたら、graphical.target でした。 こちらでは動作しませんので、.timer ファイルを確認してみます。
yasutakatou

2020/10/15 07:58

不思議ですね。。AfterなのでX11が起動するのを待ってから動作するので見つからないにはならないと 思うのですが、、となると環境変数でDISPLAYを設定するような箇所があってないのか。 みたいな話なのかなと思います。もし、.timerでうまくいかないのであればその線でさらに調査いたしますね!うまくいくといいですけど。。

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
86.12%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

systemd

systemdは、Linuxの起動処理及びシステム管理を行う技術です。他にも多くのサービス管理機能を備えており、ユーザープロセスを並列に起動しシステムの起動処理に要する時間を短縮できるなどの特徴があります。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

Raspberry Pi

Raspberry Piは、ラズベリーパイ財団が開発した、名刺サイズのLinuxコンピュータです。 学校で基本的なコンピュータ科学の教育を促進することを意図しています。