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):

실행 시작 =

이 서비스를 시작할 때 실행할 매개변수가 포함된 명령입니다. 값은 아래 설명된 규칙에 따라 0개 이상의 명령줄로 분할됩니다(아래 "명령줄" 섹션 참조).

사용자 단위가 아닌 운영 체제 단위를 운영하고 있으므로 이미 다음 사항을 root복잡하게 할 필요가 없습니다 .Execsudo

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

관련 정보