এটি খুব ভাল কাজের জন্য একটি কাজ systemd
।
সিস্টেমযুক্ত পরিষেবা হিসাবে স্ক্রিপ্ট চালানো
যদি আপনার সিস্টেমটি সিস্টেমড চলমান থাকে , তবে আপনি আপনার স্ক্রিপ্টটি সিস্টেমড পরিষেবা হিসাবে চালনার জন্য কনফিগার করতে পারেন যা জীবনকাল এবং কার্যকর পরিবেশের উপর নিয়ন্ত্রণ সরবরাহ করে, পাশাপাশি স্ক্রিপ্টটি শুরু করার পূর্ব শর্তাদি যেমন নেটওয়ার্ক চলছে এবং চলছে।
আপনার নিজের পরিষেবার জন্য প্রস্তাবিত ফোল্ডারটি হ'ল /etc/systemd/system/
(অন্য বিকল্পটি হ'ল /lib/systemd/system
তবে এটি সাধারণত ওওটিবি পরিষেবার জন্য ব্যবহার করা উচিত)।
যেমন ফাইলটি তৈরি করুন sudo vim /etc/systemd/system/autossh.service
:
[Unit]
# By default 'simple' is used, see also https://www.freedesktop.org/software/systemd/man/systemd.service.html#Type=
# Type=simple|forking|oneshot|dbus|notify|idle
Description=Autossh keepalive daemon
## make sure we only start the service after network is up
Wants=network-online.target
After=network.target
[Service]
## here we can set custom environment variables
Environment=AUTOSSH_GATETIME=0
Environment=AUTOSSH_PORT=0
ExecStart=/usr/local/bin/ssh-keep-alive.sh
ExecStop=pkill -9 autossh
# don't use 'nobody' if your script needs to access user files
# (if User is not set the service will run as root)
#User=nobody
# Useful during debugging; remove it once the service is working
StandardOutput=console
[Install]
WantedBy=multi-user.target
এখন আপনি পরিষেবাটি পরীক্ষা করতে পারেন:
sudo systemctl start autossh
পরিষেবার স্থিতি পরীক্ষা করা:
systemctl status autossh
পরিষেবা বন্ধ করা:
sudo systemctl stop autossh
একবার আপনি যাচাই করেছেন যে পরিষেবা প্রত্যাশা অনুযায়ী কাজ করে এটি এটিকে সক্ষম করে:
sudo systemctl enable autossh
দ্রষ্টব্য: সুরক্ষার প্রয়োজনে systemd
স্ক্রিপ্টগুলি কীভাবে crontab
সঞ্চালিত হয় তার অনুরূপ একটি সীমাবদ্ধ পরিবেশে স্ক্রিপ্টটি চালানো হবে, সুতরাং pre PATH এর মতো প্রাক-বিদ্যমান সিস্টেম ভেরিয়েবল সম্পর্কে কোনও অনুমান করবেন না। Environment
আপনার স্ক্রিপ্টের সংজ্ঞা দিতে নির্দিষ্ট ভেরিয়েবলের প্রয়োজন হলে কীগুলি ব্যবহার করুন । set -x
আপনার বাশ স্ক্রিপ্টের শীর্ষে যুক্ত করা এবং তারপরে দৌড়ানো systemctl status my_service
আপনার স্ক্রিপ্টটি কেন ব্যর্থ হচ্ছে তা শনাক্ত করতে সহায়তা করতে পারে। টাম্বের নিয়ম হিসাবে সর্বদা সর্বদা নিখুঁত পথ ব্যবহার করুন echo
বা স্পষ্ট করে সংযুক্ত করে আপনার AT PATH সংজ্ঞায়িত করুন Environment=MYVAR=abc
।