Crontab এর মাধ্যমে শেল স্ক্রিপ্ট কীভাবে কার্যকর করা যায়?


22

আমার কাছে এমন notify.shস্ক্রিপ্ট রয়েছে যা দেখে মনে হচ্ছে:

notify-send "hi welcome"

আমার দুপুরের জন্য ক্রন্টব নোটিফিকেশন:

0 14 * * * home/hacks/notify.sh

তবে, এটি কাজ করে না। সমস্যাটা কি?

উত্তর:


39

আপনার স্ক্রিপ্ট একটি # অনুপস্থিত! শুরুতে লাইন, যা স্ক্রিপ্টের জন্য কোন কমান্ড ইন্টারপ্রেটার ব্যবহার করতে হবে তা বলতে কার্নেল দ্বারা ব্যাখ্যা করা যাদুটি।

এটি দেখতে এইরকম করুন:

#!/bin/sh
notify-send "hi welcome"

এবং স্ক্রিপ্টটি সম্পাদনযোগ্য কিনা তা নিশ্চিত করুন:

ls -l home/hacks/notify.sh
chmod +x home/hacks/notify.sh
ls -l home/hacks/notify.sh

এছাড়াও, যেহেতু আপনি এটি কেবলমাত্র একবারে ঘটতে বলছেন, তাই ক্রন্টাবের টাইমজোনটি কি আপনার নিজস্ব সময় অঞ্চল হিসাবে একই? আপনি হয়ত এটি ঘটতে পারে 2 pm GMT এ।


+1 এই উত্তরটি দুর্দান্ত - বিশেষত স্ক্রিপ্টটির বিষয়টি নির্বাহযোগ্য হতে হবে তা লক্ষ্য করে! ধন্যবাদ!
— FXQuantTrader

খুব সূক্ষ্ম ব্যাখ্যা। আমার
— উক্তি

18

ক্রন্টব রানিং করা কেবল সহজ। এখানে আমি ক্রোনটব কাজ চালানোর উপায় বলতে যাচ্ছি। এটি ক্রোনটবে আটকে থাকা যে কেউ তার পক্ষে দরকারী useful

*/1 * * * * cd /home/hacks && sh notify.sh

স্ক্রিপ্টটি কার্যকর করার জন্য, আমাদের এটি করতে হবে:

chmod +x home/hacks/notify.sh

এখানে আমি প্রতি এক মিনিটের জন্য এই স্ক্রিপ্টটি চালাচ্ছি ... নীচের স্ক্রিপ্টটি করে আপনি এটি লগ ফাইলটিতে এটি কাজ করছে কিনা তা অনুসন্ধান করতে এটি লিখতে পারেন

লগ লিখুন

*/1 * * * * cd /home/hacks && sh notify.sh>>test.log

মেইল পাঠাও

*/1 * * * * cd /home/hacks && sh notify.sh>>test.log | mail -s "Hi this is example" user@domain.com

2
"* / 1 * * * * sh / home/hacks/notify.sh" এছাড়াও কাজ করবে না?
— ব্যবহারকারী 1179459

5

4 অনুমান:

  • ক্রোন ডেমন চলছে না (একটি ps axfww | grep cronপরীক্ষা করে দেখুন)

  • বিজ্ঞপ্তি-প্রেরণ একটি টার্মিনাল বা এক্স সেশনে আউটপুট প্রেরণের চেষ্টা করছে - তবে এটি cronপরিবেশের মধ্যে থেকেই চালিত হয়েছে এবং এটি " কার সাথে কথা বলবেন", তাই কথা বলতে জানেন না।

  • আপনার স্ক্রিপ্ট কার্যকর করা যায় না

  • home/নিম্নলিখিতরূপে crontab পরিবর্তন লিপিতে পথ ব্যবহারকারী স্ক্রিপ্ট হিসাবে মৃত্যুদন্ড কার্যকর করা আপেক্ষিক হয়। পুরো পথটি ব্যবহার করার চেষ্টা করুন


1

যোগ export DISPLAY=:0আপনার স্ক্রিপ্টের মধ্যে অবহিত পাঠানোর লাইনের উপরে। এটি লরনেজগের দ্বিতীয় পয়েন্টটিকে সম্বোধন করে।


0

আপনাকে নিম্নলিখিত কমান্ড দ্বারা ক্রন্টব্যাট খুলতে হবে:

crontab -u username -e (to edit) -l(to list) -r(to remove) 10(minutes) 8-15(hours) *(Day of month) *(month) 1,3,5(days of week) /path/to/script/script_name.sh

এটি প্রতি সোমবার, বুধবার এবং শুক্রবার সকাল 10 মিনিটের সময় সকাল 8 টা থেকে 3 মিনিটে আপনার স্ক্রিপ্টটি চালাবে।


0

প্রথমত, আমাদের কমান্ড দিয়ে ক্রোনট্যাব সম্পাদনা করা উচিত crontab -eএবং এর ভিতরে এটি Crontabএক্সিকিউটেবল স্ক্রিপ্টের পথ এবং আপনার ক্ষেত্রে এর মতো যুক্ত করা উচিত * 14 * * * home/hacks/notify.sh >/dev/null 2>&1।

ক্রোন পরিষেবা শুরু / বন্ধ / পুনরায় চালু করুন

  • /etc/init.d/crond start /stop / restart
  • service crond start /stop /restart
  • systemctl stop crond.service

systemctl স্টপ crond.service


-2

বেশ সহজ, ক্রন্টব ফাইলের নীচে নিম্নলিখিত লাইনটি যুক্ত করুন: sudo nano /etc/crontab

@reboot root cd /home/pi/node-sonos-http-api && npm start &


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