ප්රශ්නය: මට systemd සමඟ ක්රියාවලියක් ආරම්භ කර එම ක්රියාවලිය මා තෝරා ගැනීමේ වැඩ නාමාවලියක් පැවරිය හැකිද?
මට ආරම්භ කිරීමට අවශ්ය සේවාවක් මා සතුව ඇත systemd. එම සේවාව ආරම්භ කරන විට, එය වර්තමාන වැඩ කරන නාමාවලියක් ලබා දීමට මට අවශ්යය. මම භාවිතා කරන්නේ නම් මෙය කරන්නේ කෙසේදැයි මම දනිමි init, නමුත් මට ගැටලුවක් තිබේ systemd.
මෙන්න මම වැඩ කිරීමට උත්සාහ කළ දේ.
මගේ සේවය
මම සරල උපයෝගීතාවයක් ("listdir") නිර්මාණය කළෙමි, එය පයිතන් හි ලියා, සහ /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තිබේද?