คำถาม: ฉันสามารถเริ่มกระบวนการด้วย systemd และกำหนดไดเรกทอรีการทำงานที่ฉันเลือกได้หรือไม่?
systemd
ฉันมีบริการที่ฉันต้องการที่จะเริ่มต้นด้วย เมื่อเริ่มบริการนั้นฉันต้องการให้สามารถกำหนดไดเรกทอรีการทำงานปัจจุบันได้ ฉันรู้วิธีการทำเช่นนี้หากผมใช้แต่ฉันมีปัญหากับinit
systemd
นี่คือสิ่งที่ฉันพยายามจะทำงาน
บริการของฉัน
ฉันสร้างยูทิลิตี้ง่าย ๆ ("listdir") เขียนเป็น Python และวางใน/opt/bin/listdir
:
#! /usr/bin/python
import os
print 'Current working directory: %s' % (os.getcwd())
ไฟล์กำหนดค่าของฉัน
จากนั้นฉันสร้างlistdir.service
ไฟล์systemd
และวางไว้ที่นี่/lib/systemd/system/listdir.service
::
[Unit]
Description=Test of listing CWD.
[Service]
ExecStartPre=chdir /usr/local
ExecStart=/opt/bin/listdir
StandardOutput=syslog
StandardError=syslog
[Install]
WantedBy=multi-user.target
ปัญหา
เมื่อฉันเรียกใช้systemctl start listdir
บันทึกระบบของฉันจะบันทึกไดเรกทอรีราก ("/") เป็นไดเรกทอรีการทำงานปัจจุบัน แน่นอนฉันคาดว่าจะ/usr/local
เป็นไดเรกทอรีปัจจุบันเนื่องจากฉันคิดว่าExecStartPre
จะเปลี่ยนไดเรกทอรีก่อนเริ่มกระบวนการ
เห็นได้ชัดว่าฉันจินตนาการว่าsystemd
มันจะทำงานคล้ายกับเชลล์สคริปต์ (แม้ว่าฉันรู้ว่ามันไม่ใช่สคริปต์เชลล์) มีคนให้ความคิดแก่ฉันในสิ่งที่ฉันควรทำอย่างไร มันเป็นไปได้ที่จะตั้งค่าไดเรกทอรีการทำงานโดยใช้systemd
? ขอบคุณ!
แก้ไข:บันทึกระบบของฉันรายงานข้อผิดพลาด (ฉันเพิ่งสังเกตเห็น)
Executable path is not absolute, ignoring: chdir /usr/local
ดังนั้นchdir
เป็นคำสั่งเชลล์และไม่สามารถเรียกใช้งานได้ ถูก แต่ยังมีวิธีที่ฉันจะเปลี่ยนไดเรกทอรีใช้systemd
หรือไม่?