Systemd サービスは変更をディスクに保存しません。

Systemd サービスは変更をディスクに保存しません。

keychron.service起動するたびにパラメータをオーバーライドする単純なファイルを作成しました。

[Unit]                                                                                                                                                                                                    
Description=The command to make the Keychron K2 work                            
                                                                            
[Service]                                                                       
Type=oneshot                                                                    
ExecStart=/bin/echo 0 | sudo /usr/bin/tee /sys/module/hid_apple/parameters/fnmode
                                                                               
[Install]                                                                       
WantedBy=multi-user.target

このスクリプトは私のキーボードをパッチするために使用され、残念ながら動作0/sys/module/hid_apple/parameters/fnmodeません。問題を解決するために私がしたことは次のとおりです。

  1. 小切手fnmode1
thekenu:~
$ cat /sys/module/hid_apple/parameters/fnmode
1
  1. 以下を使用して再起動し、再起動がkeychron.service成功systemctl statusしたことを確認します。
thekenu:~
$ sudo systemctl restart keychron.service
thekenu:~
$ systemctl status keychron.service
● keychron.service - The command to make the Keychron K2 work
   Loaded: loaded (/etc/systemd/system/keychron.service; enabled; vendor preset: enabled)
   Active: inactive (dead) since Wed 2020-07-22 06:33:13 PDT; 3s ago
  Process: 28778 ExecStart=/bin/echo 0 | sudo /usr/bin/tee /sys/module/hid_apple/parameters/fnmode (code=exited, status=0/SUCCESS)
 Main PID: 28778 (code=exited, status=0/SUCCESS)

Jul 22 06:33:13 thekenu-XPS-15-9560 systemd[1]: Starting The command to make the Keychron K2 work...
Jul 22 06:33:13 thekenu-XPS-15-9560 echo[28778]: 0 | sudo /usr/bin/tee /sys/module/hid_apple/parameters/fnmode
Jul 22 06:33:13 thekenu-XPS-15-9560 systemd[1]: Started The command to make the Keychron K2 work.
  1. fnmodeになると予想されますが、0まだ1
thekenu:~
$ cat /sys/module/hid_apple/parameters/fnmode
1
  1. ExecStart次のコマンドを実行してください。keychron.service
thekenu:~
$ /bin/echo 0 | sudo /usr/bin/tee /sys/module/hid_apple/parameters/fnmode
0
  1. それは.fnmodeしかし、私はそれが何をすべきかを0入力しているようです。keychrone.service
thekenu:~
$ cat /sys/module/hid_apple/parameters/fnmode
0

ベストアンサー1

ExecStart普通のシェルラインではありません。からsystemd.service(5)

実行開始=

このサービスを開始したときに実行するパラメーターを含むコマンド。値は、以下の規則に従ってゼロ個以上のコマンドラインに分割されます(以下の「コマンドライン」セクションを参照)。

ユーザー単位ではなくオペレーティングシステム単位を実行しているため、すでに次のことをroot複雑にする必要はありません。Execsudo

ExecStart=/bin/bash -c "echo 0 > /sys/module/hid_apple/parameters/fnmode"

おすすめ記事