যখনই ডিরেক্টরি পরিবর্তিত হয় তখন সিস্টেমড পরিষেবাটি স্বয়ংক্রিয়ভাবে পুনঃসূচনা করুন (এর অভ্যন্তরের কোনও ফাইল)


25

কোনও ফাইল পরিবর্তন হলে আমি কীভাবে একটি সিস্টেমড পরিষেবা পুনরায় চালু করব। আমি একটি জাভা পরিষেবা পেয়েছি যা কোনও জার ফাইল পরিবর্তিত হলে আমি পুনরায় লোড করতে চাই।

এটি আমার সেটআপ:

srv.service

[Unit]
Description=srv 0.1: Service's description
After=network.target

[Service]
Type=simple
WorkingDirectory=/opt/srv
ExecStart=/opt/srv/bin/srv
User=root
Group=root

[Install]
WantedBy=multi-user.target

srv.path

[Path]
PathModified=/opt/srv/lib/

আমি PathChangedপরিবর্তে একটি ডিরেক্টরি ব্যবহার করে এবং ফাইল ব্যবহার করার চেষ্টা করেছি ।

যখন আমি চালিত পরিষেবাটি ইনস্টল করি: sudo systemctl daemon-reloadএবং sudo systemctl enable srv

ধন্যবাদ!


2
পরীক্ষিত নয় তাই উত্তর নয়, তবে ডকুমেন্টেশন থেকে মনে হয় pathইউনিটগুলি কেবলমাত্র অন্যান্য ইউনিট সক্রিয়করণ (শুরু) করার জন্য দরকারী। এখানে আপনি সম্ভবত তৈরী করতে পারে srv-restart.pathসঙ্গে PathChanged=/opt/srv/lib/এবং srv-restart.serviceসঙ্গে ExecStart=systemctl restart srv.service
মিশা পলিটোস্কি

দেখে মনে হচ্ছে আপনি পরিষেবা হিসাবে একই নাম রেখেছেন (.পাথ দিয়ে) পাথ ফাইলটি একই পরিষেবাটিকে বোঝায়: freedesktop.org/software/systemd/man/systemd.path.html তবে ... আমি জানি না এটি শুধুমাত্র একটি সেবা শুরু বা এটা এমনকি এটিকে পুনর্সূচনা যদি এটা ইতিমধ্যেই চলছে যদি
জ্যামিং

যেহেতু আমি এটি ডক্স থেকে বুঝতে পারি, srv.pathকেবল তার সমতুল্য কাজ করতে পারে systemclt start srv.service, তাই পুনরায় আরম্ভ করার জন্য আপনাকে আর একটি পরিষেবা প্রয়োজন হবে, যা শুরু হওয়ার পরে আপনার পরিষেবাটি পুনরায় চালু করা হবে।
মিচা পলিটোভস্কি

systemctl start srv.pathআপনার এটি শুরু করতে হবে - এবং এটি বুটে শুরু করতে হবেsystemctl preset srv.path
মাইকেল ডি

1
প্রাসঙ্গিক: github.com
মাইচা পলিটোস্কি

উত্তর:


22

মিশাল পলিটোভস্কির মন্তব্য ঠিক সঠিক। আমি নতুন পদ্ধতিতে যখন স্থাপন করা হয় তখন স্বয়ংক্রিয়ভাবে পরিষেবাগুলি পুনঃসূচনা করতে আমি এই পদ্ধতিটি ব্যবহার করি। এটা খুব সহায়ক।

পরিষ্কার হতে, আপনার প্রয়োজন:

srv.service

[Unit]
Description=srv 0.1: Service's description
After=network.target

[Service]
Type=simple
WorkingDirectory=/opt/srv
ExecStart=/opt/srv/bin/srv
User=root
Group=root

[Install]
WantedBy=multi-user.target

SRV-watcher.service

[Unit]
Description=srv restarter
After=network.target

[Service]
Type=oneshot
ExecStart=/usr/bin/systemctl restart srv.service

[Install]
WantedBy=multi-user.target

SRV-watcher.path

[Path]
PathModified=/opt/srv/lib

[Install]
WantedBy=multi-user.target

6
যদি প্রচুর ফাইল দ্রুত ধারাবাহিকতায় পরিবর্তিত হয় তবে এটি কখন চালু হবে সে সম্পর্কে কোন গ্যারান্টি আছে?
ধনী রিমার

3
এটি মনে রাখা গুরুত্বপূর্ণ যে «.পাথ» ইউনিটটি সক্ষম করাও দরকার। এই ক্ষেত্রে:systemctl enable srv-watcher.path && systemctl start srv-watcher.path
পাউ রুওলান ফেরাগুট

1
যদি আপনার পুনর্সূচনা পরিসেবা হিসাবে একই নামের নয় .path ফাইল শুধু যোগ Unit=nameofmyrestart.serviceকরতে [Path]আপনার বিভাগে .pathফাইল। freedesktop.org/software/systemd/man/systemd.path.html#Unit=
ডি কেবেলার

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