두 개의 시스템 시작 스크립트를 만들었습니다.https://www.howtogeek.com/687970/how-to-run-a-linux-program-at-startup-with-systemd/, 다음을 포함합니다:
#1
#!/bin/bash
synclient RightButtonAreaLeft=0
synclient RightButtonAreaTop=0
#2
#!/bin/bash
modprobe -r ec_sys
modprobe ec_sys write_support=1
echo -n -e "\x0a" | sudo dd of="/sys/kernel/debug/ec/ec0/io" bs=1 seek=12 count=1 conv=notrunc 2> /dev/null
while true; do
read -rsn1 input
if [[ size=${#input}!=0 ]]; then
echo -n -e "\x8a" | sudo dd of="/sys/kernel/debug/ec/ec0/io" bs=1 seek=12 count=1 conv=notrunc 2> /dev/null
fi
echo -n -e "\x0a" | sudo dd of="/sys/kernel/debug/ec/ec0/io" bs=1 seek=12 count=1 conv=notrunc 2> /dev/null
done
수동으로 실행하면 스크립트가 예상대로 작동합니다.
상단 스크립트는 터치패드의 왼쪽 하단 모서리에 있는 RMB 제스처를 비활성화하고 하단 스크립트는 내가 입력할 때 LED를 켜고 꺼야 합니다(https://www.reddit.com/r/thinkpad/comments/7n8eyu/thinkpad_led_control_under_gnulinux/), 서비스 상태를 확인하여 실행 중인지 확인했지만 시작 시 자동으로 실행될 때 둘 다 아무런 영향을 미치지 않습니다.
systemctl status servicename.service 명령을 사용했는데 명백한 오류가 발생하지 않았습니다. 수정 제안이 이상적이지만 시작 시 이러한 스크립트를 실행하는 것에 대한 대안도 환영합니다. init.d 방법과 우분투의 시작 스크립트 설정을 시도했지만 불행히도 두 방법 모두 작동하지 않습니다.
답변1
작업은 데스크탑과 동일한 런타임 환경에서 실행되지 않고 를 실행 cron
하거나 시작 스크립트로 실행됩니다. 로 스크립트를 시작합니다 . 변경 사항이나 기타 환경 변수 설정은 작업 에 자동으로 전파되지 않습니다 . 예를 들어 no 이므로 GUI 프로그램에는 특별한 처리(읽기 )가 필요합니다.systemd
systemd
root
PATH
cron
$DISPLAY
man xhost
echo "=== id ===";id;echo "=== set ===";set;echo "=== env ===";env | sort;echo "=== alias ===";alias
각 환경의 결과를 확인하세요.