我的文件中有这个配置/lib/systemd/system/usbip.service
,但我希望服务将 PID 文件写入/var/run/usbipd.pid
。
[Unit]
Description=usbip client
After=network.target
[Service]
Type=oneshot
RemainAfterExit=yes
ExecStart=/bin/sh -c "/usr/lib/linux-tools/$(uname -r)/usbip attach -r 10.10.10.90 -b $(/usr/lib/linux-tools/$(uname -r)/usbip list -r 10.10.10.90 | grep '0403:6001' | cut -d: -f1)"
ExecStop=/bin/sh -c "/usr/lib/linux-tools/$(uname -r)/usbip detach --port=$(/usr/lib/linux-tools/$(uname -r)/usbip port | grep '<Port in Use>' | sed -E 's/^Port ([0-9][0-9]).*/\1/')"
[Install]
WantedBy=multi-user.target
我找到了一篇包含此信息的文章:
-P FILE
,--pid FILE
: 将进程 ID 写入 FILE。
如果没有指定 FILE,则使用/var/run/usbipd.pid
我不知道将其放在usbip.service
文件中的什么位置以及如何放置它。
答案1
sh
你在你的台词中调用Exec*=
,但传递了一堆你无法理解的bash
主义sh
Exec*=
如果您的语句仅引用bash
脚本,并且您在脚本中完成所有操作,那么您的生活将会更简单。bash
例如ExecStart=/opt/local/startup
。