আমার সক্ষম হওয়া সিস্টেমড পরিষেবাটি বুটে কেন শুরু হবে না?


20

আমার মধ্যে নিম্নলিখিত সিস্টেমড ইউনিট ফাইল রয়েছে /etc/systemd/system/emacs.service:

[Unit]
Description=Emacs: the extensible, self-documenting text editor
Documentatin=man:emacs(1) info:Emacs


[Service]
Type=forking
ExecStart=/usr/bin/emacs --daemon
ExecStop=/usr/bin/emacsclient --eval "(progn (setq kill-emacs-hook nil) (kill-emacs))"
Restart=always
Environment=DISPLAY=:%i
TimeoutStartSec=0

[Install]
WantedBy=default.target

আমি এটি বুট শুরু করতে চাই, তাই আমি প্রবেশ করলাম systemctl enable emacs

যাইহোক, প্রতিটি সময় আমার পরিষেবাটি পুনরায় চালু হয়, systemctl status emacsদেখায়:

● emacs.service - Emacs: the extensible, self-documenting text editor
   Loaded: loaded (/etc/systemd/system/emacs.service; disabled; vendor preset: enabled)
   Active: inactive (dead)

তবে তারপরে systemctl start emacsস্থিতি ফেরত প্রবেশ করুন এবং যাচাই করুন:

● emacs.service - Emacs: the extensible, self-documenting text editor
   Loaded: loaded (/etc/systemd/system/emacs.service; disabled; vendor preset: enabled)
   Active: active (running) since Fri 2016-11-11 23:03:59 UTC; 4s ago
  Process: 3151 ExecStart=/usr/bin/emacs --daemon (code=exited, status=0/SUCCESS)
 Main PID: 3154 (emacs)
    Tasks: 2
   Memory: 7.6M
      CPU: 53ms
   CGroup: /system.slice/emacs.service
           └─3154 /usr/bin/emacs --daemon

সফলভাবে বুটে শুরু করার জন্য আমি এই প্রক্রিয়াটি কীভাবে পেতে পারি?

উত্তর:


9

এটিকে কেন কাজ করতে হবে তা ছাড়া আমার কোনও ধারণা নেই:

মুছে যাওয়া Environment=DISPLAY=:%i

একটি User=পরিবর্তনশীল যুক্ত

নিশ্চিত করুন যে সঠিক ফাইলটি ছিল /etc/systemd/system/emacs.service(আগে এটি একটি হার্ড লিঙ্ক ছিল)

এবং আবার দৌড়ে systemctl enable emacs

এটি এটি কাজ করে।

সম্পাদনা করুন এখানে আসল সমস্যাটি হ'ল আমার 3 লাইনে টাইপ ছিল: Documentatin

আমি এটি পরীক্ষা করে খুঁজে পেয়েছি journalctl। আমি প্রস্তাব দিচ্ছি যে যার যার কাছে সিস্টেমড স্ক্রিপ্ট আছে সেগুলি একই কাজ করুক কারণ স্ট্যাডারকে কোনও ত্রুটি প্রেরণ করা হয়নি।


এটি কি একটি রিবুট কাজ করে? আমি অনুমান করি যদি ডেমন মোডের কোনও X11 সংযোগের প্রয়োজন হয় না, তবে After=...আমি উল্লিখিত কোনও প্রয়োজন নেই ।
অ্যালেক্সিস উইলক

1
হ্যাঁ এটি রিবুটের পরে কাজ করে। এটি কোনও গ্রাফিকাল ইমাকস নয় তাই কোনও এক্স 11 প্রয়োজন নেই। এটি কেবল একটি লাইন যা আমি একটি উদাহরণ থেকে অনুলিপি করেছিলাম এবং মনোযোগ দিই নি।
স্টারটেক

3

ওহ এটি আকর্ষণীয়।

একটি এলোমেলো পরিষেবা ইউনিট বাছাই করা এবং এটির দিকে তাকানো, এটি পরিবর্তে একটি নির্দিষ্ট লক্ষ্যের উপর নির্ভর করে default.target। পরেরটি প্রতীকী ... নির্দিষ্ট লক্ষ্যে একটি কনফিগার করা লিঙ্ক, শব্দার্থগতভাবে এটির কোনও অর্থ হয় না। (দেখুন systemctl set-default)

এটি disabledআপনাকে সক্ষম করার পরে কেন আপনার পরিষেবা দেখায় তা ব্যাখ্যা করতে পারে। উদাহরণস্বরূপ, default.targetআপনার পরিষেবা ফাইলটিতে প্রতিস্থাপনের চেষ্টা করুন multi-user.target

(সক্ষম করতে ব্যর্থ হলে ত্রুটির প্রতিবেদন না করা সিস্টেমেডের ত্রুটির মতো বলে মনে হয় I এখন আপনার যদি ডিরেক্টরি থাকে তবে আমি প্রায় অবাক হয়েছি /etc/systemd/system/default.target.wants)।


জার্নালটিএল কমান্ড আপনাকে জানিয়েছে কী ভেঙে গেছে (উদাহরণস্বরূপ সক্ষমটি কেন ব্যর্থ হয়েছিল।) লিঙ্কটি হিসাবে, যদি আপনি নিজের ব্যক্তিগত পরিষেবা তৈরি করেন তবে এটির প্রয়োজন হয় না। আপনি অন্যদের ইনস্টল / অপসারণ করতে চান এমন প্যাকেজ তৈরি করে কিনা তা
বিবেচ্য নয়

এই টুইটটি আমার পছন্দ নয় স্টাডার এবং অন্যকে জার্নালে কিছু ত্রুটি জানার জন্য এটি কেন লেখা হবে?
সোর্সজেদি

এটি জার্নালে সব লিখেছে। আমি যা দেখেছি, সেগুলি থেকে আপনি কেবলমাত্র একটি খুব প্রাথমিক, সিস্টেম ভিত্তিক নির্দিষ্ট, ত্রুটি দেখতে পাবেন যদি এটি ডেমনটি শুরু না করতে পারে।
অ্যালেক্সিস উইল্ক

2
ব্যবহারকারী এমনকি একটি মৌলিক ত্রুটি হিসাবেও রিপোর্ট করেনি, তারা বিশ্বাস করে যে অপারেশনটি সফল হয়েছে এবং তাই পুনরায় চালু করতে এগিয়ে গেছে। ফেস ভ্যালুতে, সিস্টেমডে একটি ত্রুটি রয়েছে। ব্যবহারকারীদেরও ব্যর্থতা মোড রয়েছে, তবে এটি আমার কাছে মনে হয়নি যেমন একটি ত্রুটি বার্তা সম্পূর্ণরূপে উপেক্ষা করা এই প্রশ্নের মধ্যে খুব সম্ভবত একটি।
সোর্সজেদি

1
@ সোর্সজেদি আমার কীভাবে আপনি এটি জানতেন তা সম্পর্কে কোনও ধারণা নেই তবে হ্যাঁ, আমার এখন ইনসাইডে একটি তালিকা রয়েছে /etc/systemd/system/default.target.wants যা আমার পরিষেবা ফাইলগুলি। এবং হ্যাঁ, আমার কোনও ধারণা ছিল না যে এখানে কোনও ত্রুটি রয়েছে।
স্টারটেক

1

আপনার একটি ডিসপ্লে এনভায়রনমেন্ট ভেরিয়েবল রয়েছে, এর অর্থ আপনি X11 শুরু করতে চান। সুতরাং আপনার নিজের পরিষেবা অবধি ততক্ষণ অবরুদ্ধ করতে হবে।

এটি বিকল্পটি ব্যবহার করে করা হয়After=...

আমি নিজেই এটি করি নি, সুতরাং এটি কাজ করবে তা আমি বলতে পারি না তবে এটির সাথে সম্ভবত এটি করার কিছু রয়েছে graphical.target

[Unit]
After=graphical.target

আরেকটি সম্ভাবনা, যদি এক্স সার্ভারটি তাত্ক্ষণিকভাবে শুরু না হয় (যেমন আপনার লাইটডিএম বা এর সাথে লগইন স্ক্রিন রয়েছে), তবে আপনাকে WantedBy=...পরিবর্তে এটি ব্যবহার করতে হতে পারে :

[Unit]
WantedBy=graphical.target

আপনি যদি এটি সিস্টেমডের সাথে কাজ করতে করতে ক্লান্ত হয়ে পড়ে থাকেন তবে আপনি এক্স-উইন্ডোজ পরিচালকদের এটিকে কাজ করার জন্য যেভাবে করতে পারেন তার সাধারণ উপায়টি খতিয়ে দেখতে চাইতে পারেন।

নেই ~/.xprofileফাইল যা মত কাজ করে ~/.bashrcফাইল।

রয়েছে ~/.config/autostart/*.desktopফাইল। অ্যাপ্লিকেশন সেখানে সংজ্ঞায়িত করা হয় যা এটি স্বয়ংক্রিয়ভাবে শুরু হবে।

এই সমাধানগুলি সিস্টেম বিস্তৃত নয়, যদিও আপনার একাধিক ব্যবহারকারী থাকলে প্রত্যেকের নিজস্ব নিজস্ব প্রবেশ থাকতে হবে। এছাড়াও, এটি রুট হিসাবে অ্যাপ্লিকেশন শুরু করে না, পরিবর্তে আপনি।


পার্শ্ব নোট হিসাবে, "লোডযুক্ত + নিষ্ক্রিয় (মৃত)" বার্তাটির অর্থ হ'ল সিস্টেমড প্রক্রিয়াটি শুরু করতে খুব কঠিন সময় নিয়েছিল এবং ফলস্বরূপ এটিকে ত্যাগ করার সিদ্ধান্ত নিয়েছিল । আপনি ম্যানুয়ালি পরীক্ষা করতে পারেন যে name.serviceএকবার ব্যবহার করে আপনি পুনরায় বুট করেন:

systemctl stop <service-name>
systemctl start <service-name>

এটি তথ্যটি সঠিক বলে ধরে নিয়ে স্থিতিটি রিফ্রেশ করবে এবং পরিষেবাটি সঠিকভাবে শুরু করবে। তারপরে আপনি অতিরিক্ত বিশদটি দেখতে আবার স্থিতিটি পরীক্ষা করতে পারেন:

 systemctl status <service-name>

2
হুঁ, আমি পুরো লাইনটি মুছলাম এবং কিছুই পরিবর্তন হয়নি। এছাড়াও, (যেমন আমি আমার প্রশ্নে বলেছি) এটি সিস্টেমটেক্ট স্টার্ট ইম্যাকগুলি চালিয়ে সূক্ষ্ম শুরু হয়)।
স্টারটেক

আমার আপডেট করা প্রশ্ন দেখুন। আমি একটি টাইপো ছিল Documentatin। আপনার ইঙ্গিতটি journalctlআমাকে এখানে সহায়তা করেছিল।
স্টারটেক

0

এটি ডিবানের বেশ কয়েকটি সার্ভিস ফাইলে একটি বাগ রয়েছে:

# systemctl enable watchdog
Synchronizing state of watchdog.service with SysV init with /lib/systemd/systemd-sysv-install...
Executing /lib/systemd/systemd-sysv-install enable watchdog
# find /etc/systemd/ | grep watch
# tail -n2 /lib/systemd/system/watchdog.service

[Install]

https://www.raspberrypi.org/forums/viewtopic.php?f=82&t=218609&p=1406567#p1406567 https://forum.armbian.com/topic/9115-still-dont-know-where-to-report -bugs-watchdogservice-রাজি-টু-স্টার্ট কারণে-টু-ভাঙ্গা-সার্ভিস ফাইল /

বিতরণ স্তর ঠিক করা হয়

echo "WantedBy=default.target" >> /lib/systemd/system/watchdog.service
systemctl daemon-reexec
systemctl enable watchdog
systemctl stop watchdog.service
systemctl start watchdog.service

এর অনেক ম্যানুয়াল বিকল্প রয়েছে।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.