คำถาม: ฉันสามารถเริ่มกระบวนการด้วย systemd และกำหนดไดเรกทอรีการทำงานที่ฉันเลือกได้หรือไม่?
systemdฉันมีบริการที่ฉันต้องการที่จะเริ่มต้นด้วย เมื่อเริ่มบริการนั้นฉันต้องการให้สามารถกำหนดไดเรกทอรีการทำงานปัจจุบันได้ ฉันรู้วิธีการทำเช่นนี้หากผมใช้แต่ฉันมีปัญหากับinitsystemd
นี่คือสิ่งที่ฉันพยายามจะทำงาน
บริการของฉัน
ฉันสร้างยูทิลิตี้ง่าย ๆ ("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หรือไม่?