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

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

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

Raspbianは、DebianベースのRaspberry Pi用ディストリビューション。ハードウェア浮動小数点演算を有効にすることが可能で、Webブラウズなどの速度を向上できます。

Linux

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

Raspberry Pi

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

Q&A

解決済

1回答

3617閲覧

Rspberry piにてsystemdを使ってシャットダウンボタンを稼働させたい

morutemu

総合スコア45

Raspbian

Raspbianは、DebianベースのRaspberry Pi用ディストリビューション。ハードウェア浮動小数点演算を有効にすることが可能で、Webブラウズなどの速度を向上できます。

Linux

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

Raspberry Pi

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

0グッド

0クリップ

投稿2017/12/10 08:47

Raspberry piにてシャットダウンボタンを作成しようと以下サイトを参考にして奮闘しているのですが、systemdがうまく稼働しません。

シャットダウンボタン参考サイト1
シャットダウンボタン参考サイト2
自動起動参考サイト

ちなみにプログラムは「シャットダウンボタン参考サイト1」の18ピンを使用するプログラムを参考にしております。

以下プログラム(場所:/home/pi/shutdownbutton.py)

python

1#!/usr/bin/python 2# coding:utf-8 3import time 4import RPi.GPIO as GPIO 5import os 6 7GPIO.setmode(GPIO.BCM) 8 9#GPIO18pinを入力モードとし、pull up設定とします 10GPIO.setup(18,GPIO.IN,pull_up_down=GPIO.PUD_UP) 11 12while True: 13 GPIO.wait_for_edge(18, GPIO.FALLING) 14 sw_counter = 0 15 16 while True: 17 sw_status = GPIO.input(18) 18 if sw_status == 0: 19 sw_counter = sw_counter + 1 20 if sw_counter >= 50: 21 print("長押し検知!") 22 os.system("sudo shutdown -h now") 23 break 24 else: 25 print("短押し検知") 26 break 27 28 time.sleep(0.01) 29 30 print(sw_counter)

.serviceファイルは以下の通りで、保存場所は、「シャットダウンボタン参考サイト2」のところを参考に保存しました。

以下shutdownbutton.service
(場所:/usr/lib/systemd/system/shutdownbutton.service)

service

1[Unit] 2Description=shutdownbutton 3 4[Service] 5ExecStart =/home/pi/shutdownbutton.py 6Restart=always 7Type=simple 8 9[Install] 10WantedBy=multi-user.target

その後ターミナルでディレクトリを変更。

terminal

1cd /usr/lib/systemd/system/

以下を実行したところエラーが出ました。

terminal

1sudo systemctl enable shutdownbutton.service

エラー詳細

Failed to execute operation: File exists

プログラム自体は動作するみたいですが、起動時にどうやら起動しません。
何かやり方が違うのでしょうか?教えてください。

あと、.serviceを保存する場所は、「自動起動参考サイト」のような例もあり、
①、②のどちらでも可能でしょうか
①/usr/lib/systemd/system/
②etc/systemd/system/

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

まず

①、②のどちらでも可能でしょうか

①/usr/lib/systemd/system/
②etc/systemd/system/

私は/etc/systemd/system/に作成しています。

次にsudo systemctl enable shutdownbutton.serviceにてFile existsエラー発生していますが、これはシンボリックリンクを作成しているだけなので無視してよいと考えています。(私の環境ではエラー発生しませんが)

次に
systemctl status shutdownbutton.serviceで現在のサービス状態を確認ください。
結果が
Loaded: loaded (/etc/systemd/system/shutdownbutton.service; enabled)
であればサービス登録されていますし
Active: active ~
であれば、実際にshutdownbutton.pyは起動されています。
active以外であればsudo systemctl start shutdownbutton.serviceで開始し、再度
systemctl status shutdownbutton.serviceで現在のサービス状態を確認ください。

上記を行っても実際に動作していない場合は
systemctl status shutdownbutton.serviceの結果を質問に追記ください。

ひとつ気になるのは.serviceでユーザーとグループ指定していない部分でしょうか。
私は

User=pi Group=pi

のようにユーザーとグループを指定しています。

投稿2017/12/13 09:38

can110

総合スコア38266

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問