我有一个小脚本,可以将 midi 输入音符转换为媒体功能(调高音量、播放下一首歌曲等)。它看起来像这样:
#!/bin/bash
aseqdump -p "CMD MM-1" | \
while IFS=" ," read src ev1 ev2 ch label1 data1 label2 data2 rest; do
case "$ev1 $ev2 $data1" in
"Note on 32" ) xdotool key XF86AudioRaiseVolume ;;
"Note on 31" ) xdotool key XF86AudioLowerVolume ;;
"Note on 51" ) xdotool key XF86AudioMute ;;
"Note on 28" ) xdotool key XF86AudioPrev ;;
"Note on 29" ) xdotool key XF86AudioNext ;;
"Note on 50" ) xdotool key XF86AudioPlay ;;
esac
done
我可以从终端启动它,但它仍然无法接收命令,直到我按下ctrl+c
。到目前为止一切顺利。我的问题是,我如何将此脚本用作服务,这样我就不必担心它在可见的终端中并在重启时运行?
/etc/systemd/system/
我有一个包含以下内容的服务文件:
[Unit]
Description=My Shell Script for Sync
[Service]
ExecStart=/bin/bash /usr/bin/midi2keys.sh
[Install]
WantedBy=multi-user.target
答案1
为了在重启后继续运行,您应该将脚本保存在
cd /opt/systemd/
然后sudo chmod a+x YOURSCRIPTFILENAME
然后创建类似的服务
sudo touch /etc/systemd/system/YOURSERVICENAME.service
然后通过输入以下内容来编辑文件sudo nano /etc/systemd/system/YOURSERVICENAME.service
:
[Unit]
Description=My Shell Script for Sync
[Service]
ExecStart=/bin/bash /usr/bin/midi2keys.sh
[Install]
WantedBy=multi-user.target
然后按 Ctrl + X 退出,按 Y 保存并按 Enter 写入文件。
现在安装服务并确保它在启动时加载,输入:
systemctl daemon-reload
systemctl enable YOURSERVICENAME.service
重新启动机器。