ক্রন্টবের @ রিবুট কেবল মূলের জন্যই কাজ করে?


64

man 5 crontab বুটে স্ক্রিপ্ট চালানোর জন্য ক্রোনট্যাব কীভাবে ব্যবহার করবেন সে সম্পর্কে এটি বেশ স্পষ্ট:

   These special time specification "nicknames" are supported, which replace the 5 initial time and date
   fields, and are prefixed by the `@` character:
   @reboot    :    Run once after reboot.

তাই আমি আনন্দের সাথে আমার ক্রন্টবটিতে একটি লাইন যুক্ত করেছি (আমার ব্যবহারকারীর অ্যাকাউন্টের অধীনে, মূলের নয়):

@reboot     /home/me/myscript.sh

তবে কোনও কারণে, myscript.sh মেশিন পুনরায় বুটে চালিত হবে না। (যদি আমি কমান্ড লাইন থেকে প্রার্থনা করি তবে এটি ঠিক আছে, সুতরাং এটি কোনও অনুমতি সংক্রান্ত সমস্যা নয়)

আমি কী মিস করছি?


অ্যান্থনের প্রশ্নের উত্তর দিতে আপডেট করুন:

  1. ওরাকল-লিনাক্স সংস্করণ: 5.8 (একচেটিয়া: 2.6.32-300.39.2.el5uek # 1 এসএমপি)
  2. ক্রোন সংস্করণ: vixie-cron-4.1-81.el5.x86_64
  3. হ্যাঁ, /home হয় একটি মাউন্ট পার্টিশন। দেখে মনে হচ্ছে এটি সমস্যা। আমি কীভাবে এটিকে কার্যকরী করব?
  4. বর্তমানে, myscript.shকেবলমাত্র কোনও ফাইলটিতে একটি পাঠ্য বার্তা প্রতিধ্বনিত হয় /home/me

2
আপনার ব্যবহারকারী ক্রন্টাব @ রিবুট বিকল্পটি সমর্থন করে না, একবার আপনি চারপাশে হাঁপাতে শুরু করলে কয়েকটি ক্রন্টাব লেআউট থাকে।
এক্স টিয়ান

@ এক্সটিয়ান ধন্যবাদ রুট ব্যতীত অন্য কোনও ব্যবহারকারী হিসাবে পুনরায় বুটে স্ক্রিপ্ট চালানোর প্রস্তাবিত উপায় কী?
আটকেছে

2
আপনি কী নিখোঁজ রয়েছেন তা অস্পষ্ট তবে আমরা কী অনুপস্থিত তার বিবরণ। আপনি কী ওরাকল-লিনাক্সের সংস্করণটি চালাচ্ছেন? আপনার ক্রোনটির কোন সংস্করণ রয়েছে? কি /homeএকটি মাউন্ট পার্টিশন? আপনার বিষয়বস্তু কি /home/me/myscript.sh?
অ্যান্থন

1
যদি আপনি ওরাকলের লিন ব্যবহার করেন। Ver। 5 এখানে ভিজি-ক্রোন + সহ সমস্যাগুলি সম্পর্কে এই পরিবর্তন রয়েছে @rebootoss.oracle.com/pipermail/el-errata/2012-March/002655.html
SLM

1
@ ড্যানিয়েল - কার্যকর করা যায় myscript.sh? chmod +x myscript.sh
SLM

উত্তর:


47

এটি কিছুটা বিভ্রান্তিকর বিষয় হতে পারে কারণ ক্রোনটির বিভিন্ন বাস্তবায়ন রয়েছে। এছাড়াও বেশ কয়েকটি বাগ রয়েছে যা এই বৈশিষ্ট্যটি ভেঙেছে এবং এমন কিছু ব্যবহারের ঘটনাও রয়েছে যেখানে এটি কেবল কার্যকর হয় না, বিশেষত যদি আপনি একটি শাটডাউন / বুট বনাম একটি রিবুট করেন।

বাগ

ডেটাপয়েন্ট # 1

দেবিয়ান-তে এরকম একটি বাগ এখানে আচ্ছাদিত রয়েছে, শিরোনাম: ক্রোন: @ রিবুট কাজগুলি চালানো হয় না । এটি মনে হয় উবুন্টুতেও প্রবেশ করেছে, যা আমি সরাসরি নিশ্চিত করতে পারি না।

ডেটাপয়েন্ট # 2

উবুন্টুতে বাগ প্রমাণ এই তাই Q & A- খেতাবধারী এখানে নিশ্চিত করা হবে বলে মনে করেন: @reboot নির্বাহ না cronjob

উদ্ধৃতাংশ

মন্তব্য # 1: .... 3) আপনার ক্রন্ডের সংস্করণ @reboot সমর্থন করতে পারে না আপনি কি ভিক্সের ক্রন্ড ব্যবহার করছেন? ... crontab -l -u ব্যবহারকারীর ফলাফল দেখান

মন্তব্য # 2: ... ক্রোন এর @ রিবুটের নির্দিষ্ট সংস্করণে নির্ভর না করে এটিকে একটি স্ক্রিপ্ট হিসাবে সেটআপ করা ভাল ধারণা হতে পারে।

মন্তব্য # 3: ... @ মার্ক রবার্টস পুনরায় বুটটি সরান এবং 1 * * * * * * / 1 * * * * * এ পরিবর্তন করেছেন, সমস্যা সমাধান হয়েছে! আমি রেপ পিটিএস মার্ক কোথায় পাঠাব? ধন্যবাদ!

প্রশ্নোত্তর স্বীকৃত উত্তরেরও এই মন্তব্য ছিল:

আমার কাছে মনে হচ্ছে লুবুন্টু @ রিবুট ক্রোন সিনট্যাক্স সমর্থন করে না।

অতিরিক্ত প্রমাণ

ডেটাপয়েন্ট # 3

অতিরিক্ত প্রমাণ হিসাবে এই থ্রেডটি ছিল যে কেউ একই জিনিস চেষ্টা করছে এবং হতাশ হয়ে পড়েছে যে এটি কাজ করে না। এর শিরোনাম: থ্রেড: ক্রোন - @ রিবুট কাজ কাজ করছে না

উদ্ধৃতাংশ

পুনঃ ক্রোন - @ রিবুট কাজগুলি কাজ করছে না

উদ্ধৃতি মূলত সিলার্ড পোস্ট পোস্ট করেছেন এটি আমাকে হত্যা করছে ... মোড়ক স্ক্রিপ্ট চেষ্টা করে। ম্যানুয়ালি চলমান লগ ফাইল উত্পন্ন করে ... পুনরায় চালু হচ্ছে এবং কাজটি লগ ফাইল চালায় না বা তৈরি করে না।

সিসলগ দেখায় যে সিআরএন কাজ চালিয়েছিল ... তবে আবার কোনও আউটপুট নেই এবং প্রক্রিয়া চলছে না। জুলাই 15 20:07:45 রাভেনউইং ক্রোন [1026]: (সিআরএন) ইনফো (@ রিবুট কাজ চালাচ্ছে) জুলাই 15 20:07:45 রাভেনউইং সিআরএন [1053]: (সিলার্ড) সিএমডি (/ হোম / সিলার্ড / স্ক্রিপ্টস / রান_স্পাইডোরাক)। sh> / home/ceallred/Scriptts/SpiderOak.log 2> & 1 &)

দেখে মনে হচ্ছে ক্রোন @ রিবুট কমান্ড পছন্দ করে না .... অন্য কোনও ধারণা?

ঠিক আছে ... আংশিক সমাধান হয়েছে। আমি এটিকে সমাধান হিসাবে চিহ্নিত করব এবং নতুন ইস্যু দিয়ে একটি নতুন থ্রেড শুরু করব .....

আমি মনে করি যখন CRON স্ক্রিপ্টটি চালানোর চেষ্টা করছিল (/ home / ব্যবহারকারীর নাম / স্ক্রিপ্টগুলিতে) উত্তরটি আমার এনক্রিপ্ট করা হোম ডিরেক্টরিটি মাউন্ট করা হয়নি। / Usr / স্ক্রিপ্টে সরানো হয়েছে এবং কাজটি প্রত্যাশার মতো চলে runs

সুতরাং এখন এটি একটি স্পাইডারওক ইস্যু হিসাবে উপস্থিত হয়। প্রক্রিয়া শুরু হয়, তবে বুট প্রক্রিয়াটি শেষ হওয়ার সাথে সাথে এটি শেষ হয়ে যায়। আমি কোনও কারণে ক্র্যাশ অনুমান করছি .... এটি সম্পর্কে জিজ্ঞাসা করার জন্য নতুন থ্রেড।

সব ধরনের সাহায্য করার জন্য ধন্যবাদ!

উপরের এই ব্যবহারকারীটি একবার তার সমস্যাটি @rebootবের করে ফেললে তিনি কোনও ব্যবহারকারীর ক্রন্টব এন্ট্রি থেকে কাজ করতে সক্ষম হন ।

উবুন্টুতে ক্রোনটির কোন সংস্করণ ব্যবহার করা হয়েছে তা আমি পুরোপুরি নিশ্চিত নই, তবে এটি মনে হয় যে ব্যবহারকারীর @rebootখুব বেশি ব্যবহার হতে পারে, বা ক্রোন পরবর্তী সংস্করণগুলির মধ্যে কোনও সময়ে বাগটি স্থির করা হয়েছিল।

ডেটাপয়েন্ট # 4

আমি নিম্নলিখিতটি সেন্টোস 6 এ পরীক্ষা করেছি এবং এটি কাজ করেছে।

উদাহরণ

$ crontab -l
@reboot echo "hi" > /home/sam/reboot.txt 2>&1

আমি তখন সিস্টেমটি রিবুট করলাম।

$ sudo reboot

রিবুট পরে।

$ cat reboot.txt 
hi

অ্যাভয়েস নিন

  1. এই বৈশিষ্ট্যটি সিস্টেম এবং ব্যবহারকারী ক্রন্টব উভয় এন্ট্রি উভয়ের জন্যই সমর্থিত বলে মনে হচ্ছে।
  2. আপনাকে নিশ্চিত করতে হবে যে এটি আপনার নির্দিষ্ট ডিস্ট্রো এবং / অথবা ক্রোন প্যাকেজের সংস্করণে সমর্থিত / কাজ করছে।

আমার পক্ষে আসল প্রক্রিয়াটি কীভাবে কাজ করে সে সম্পর্কে আরও জানতে @rebootএই ব্লগ পোস্টটি অন্তর্ভুক্ত নিয়ে আলোচনা করেছে। এর শিরোনাম: @ রিবুট - সহজ ক্রোন যাদুটির ব্যাখ্যা

ডিবাগিং ক্রন্ড

আপনি crondএই কনফিগারেশন ফাইলটিতে আরএইচইএল / সেন্টস / ফেডোরা ভিত্তিক ডিস্ট্রোজে নিম্নলিখিতটি যুক্ত করে ভার্সোসটিটি চালু করতে পারেন ।

$ more crond 
# Settings for the CRON daemon.
# CRONDARGS= :  any extra command-line startup arguments for crond
CRONDARGS="-L 2"

বৈধ স্তরগুলি 0, 1 বা 2 হয় this এই ফাইলটিকে ডিফল্ট লগিং স্তরে ফিরিয়ে আনার জন্য "-L 2"যখন আপনি পরিস্থিতি ডিবাগিংয়ের কাজ শেষ করেন তখন কেবল সরিয়ে ফেলুন ।


গতকাল একটি মন্তব্য পেয়েছেন , আপনার উত্তরের দিকে তাকান এবং একটি ভাল রাতের ঘুমের পরে নিজেকে উত্তর দেওয়ার সিদ্ধান্ত নিয়েছেন। একটি ভিএম সেট আপ করুন, @ রিবুট পুনরায় চেষ্টা করেছেন, আমার উত্তর পোস্ট করতে চেয়েছিলেন এবং কেবল তখনই আপনি আপনার উত্তরটি 'রচনা' করতে দেখেছেন :-(
অ্যান্থন

@ অ্যান্টন - দুঃখিত, আমি গতকালই তাড়াতাড়ি এর উত্তর দিয়েছি এবং তারপরে এটি গবেষণা চালিয়ে যেতে পেরেছি এবং খুব বিরোধী বিবরণ পেয়েছি। আমি এটি সম্পর্কে ডেবিয়ান বাগটি পেয়েছিলাম এবং উবুন্টু এসও আমি খেলতে যাচ্ছিলাম তার কিছুটা বুঝতে পারি। আমি দেখেছি এটি @rebootসেন্টোজে কাজ করেছে এবং এটি একসাথে রেখেছিল যা কিছু নির্দিষ্ট ক্রোনগুলিতে ঠিক আছে, এবং অন্যদের মধ্যে স্পষ্টত বগি / বিচ্ছিন্ন। সুতরাং বিভ্রান্তি।
slm

ওপি খুব কম বিশদ সরবরাহ করে তা ছাড়া, আপনি সহজেই এমন কিছু ব্যবহার করতে পারেন যা আপনার স্ক্রিপ্টে এখনও (বুট সময়) কাজ করে না যা এটি ব্যর্থ করে দেয়, বা এটি এখনও মাউন্ট না হওয়া ডিস্কে থাকতে পারে। আমার উত্তরটি যা ওপি মন্তব্য করেছে, এটি তৃতীয় পক্ষ দ্বারাও নিশ্চিত করা হয়েছে। এটি কালো রাজহাঁসের সমস্যা ...
অ্যান্থন

@ অ্যানটন - হ্যাঁ আমার একটি ডেটাপয়েন্ট ছিল ঠিক সেটাই। @rebootএকবার আপনি বুঝতে পেরেছিলেন যে এটি কোনও এনক্রিপ্টড ড্রাইভ অ্যাক্সেস করার চেষ্টা করছে, এটি এখনও মাউন্ট করা হয়নি।
slm

3
আপনি নির্দেশ বিলম্ব যোগ করে যে উবুন্টুতে বাগ সহজে সমাধান করা হয় চাইতে পারেন: @reboot sleep 60; <your command>। থ্রেডটির উদ্ধৃতি দিতে, "আমার অনুমান যে ক্রোন এর @ রিবুট নির্দেশিকা বুট প্রক্রিয়াতে খুব তাড়াতাড়ি চলছে"
pzkpfw

12

আমি জানতে পেরেছিলাম যে আমার উবুন্টু মেশিনে আমার কাছে এখনও @ রিবুট সময়ে ডিএনএস পরিষেবা অ্যাক্সেস নেই। এটি আমাকে দূরবর্তী ভলিউম মাউন্ট করা থেকে বিরত করেছিল। এই কর্নি, তবুও সহজ, সমাধান কাজ করেছে:

@reboot sleep 60 && /home/me/bin/mount.sh 2>&1 >> /home/me/reboot.log

(রুট ক্রোনে; কেবল ডিবাগিংয়ের জন্য শেষ অংশগুলি)


এটি একমাত্র জিনিস যা প্রকৃতপক্ষে নন-রুট ব্যবহারকারীদের জন্য ওবুন্টু 16.04 এ কাজ করে!
Aleksandar Pavić

ডেবিয়ান 8 জেসি (জিনোম 3) এ কাজ করছেন না। :(
তাদেজ

ভিএমওয়্যার ভাগ করে নেওয়া ফোল্ডারগুলিকে পৃথক স্থানে মাউন্ট করার সময় এটি আমার পক্ষে কাজ করেছিল।
jgshawkey

3

আমার কাছে ম্যাক ওক্সও রয়েছে এবং আমার স্ক্রিপ্টটি চলছিল না সেখানে আমার একই সমস্যা ছিল। তবে যখন আমি আমার স্ক্রিপ্টটি পছন্দ করতে চাই

@reboot   cd /home/me/  && sh myscript.sh

এটা আমার জন্য ভাল কাজ করেছিল. কমান্ডটি চালিয়ে আপনার শেল ফাইলটি নির্বাহযোগ্য হতে নিশ্চিত করুন make

chmod +x myscript.sh

2

আমি জানি না আপনি ইতিমধ্যে এটি সমাধান করেছেন কিনা, বা উপরেরগুলির মধ্যে আপনার যদি প্রয়োজন সমাধানটি ছিল তবে অন্য সম্ভাবনাটি হ'ল:

যদি আপনার / হোম ডিরেক্টরি এনক্রিপ্ট করা থাকে তবে লগ ইন না করা অবধি এটি উপলব্ধ নাও হতে পারে, অর্থাৎ এটি পুনরায় বুটে পাওয়া যায় না।

এই দৃশ্যে, আপনি আপনার স্ক্রিপ্টগুলি অন্য জায়গায় যেমন / এসআরভি বা / অপ্ট বা / ইউএসআর / স্থানীয় / বিন / ইত্যাদি স্থানান্তর করতে পারেন could


1

উবুন্টু জিনোম ১৩.১০ (আমার ক্ষেত্রে ডিফল্ট ব্যবহারকারী: অ্যাভেন্ডারনেট) এর একটি নতুন ইনস্টল নিন।

avanderneut@uggo:~$ crontab -l
no crontab for avanderneut
avanderneut@uggo:~$ crontab -e
no crontab for avanderneut - using an empty one

Select an editor.  To change later, run 'select-editor'.
  1. /bin/ed
  2. /bin/nano        <---- easiest
  3. /usr/bin/vim.tiny

Choose 1-3 [2]: 3
crontab: installing new crontab
avanderneut@uggo:~$ crontab -l | tail -2
# m h  dom mon dow   command
@reboot /home/avanderneut/bin/on_reboot
avanderneut@uggo:~$ vi /home/avanderneut/bin/on_reboot
avanderneut@uggo:~$ more !$
more /home/avanderneut/bin/on_reboot
#! /bin/bash
echo "Reboot script" > /var/tmp/xxx
avanderneut@uggo:~$ chmod 755 /home/avanderneut/bin/on_reboot
avanderneut@uggo:~$ ls /var/tmp
avanderneut@uggo:~$ /home/avanderneut/bin/on_reboot
avanderneut@uggo:~$ ls /var/tmp
xxx
avanderneut@uggo:~$ rm /var/tmp/xxx
avanderneut@uggo:~$ sudo reboot
[sudo] password for avanderneut: 

এবং দেখুন যে পুনরায় বুট করার পরে ফাইলটি /var/tmp/xxxসেখানে রয়েছে যদিও এটি পুনরায় বুট করার আগে ছিল না।

এটি ক্রোন সংস্করণ 3.0 দ্বারা করা হয়েছিল।

আপনাকে নিশ্চিত করতে হবে যে কোনও পরিষেবা ডিস্ক ইত্যাদি ব্যবহার করা হয়নি যা স্ক্রিপ্টটি চলার সময় উপলভ্য নাও হতে পারে। উপরের মতো সাধারণ কিছু দিয়ে শুরু করুন এবং নিশ্চিত করুন যে এটির কোনও টার্মিনাল আউটপুট নেই কারণ সম্ভবত ইমেলটি আপ এবং চলমান নয়।

আপনার যদি প্রয়োজন হয় তবে আপনাকে আরও আপ-টু-ডেট ক্রোন (অথবা ওরাকল-লিনাক্স থেকে আপগ্রেড) প্রয়োজন হয় যদি এটি আপনার জন্য কাজ করে না এবং আপনার এই বৈশিষ্ট্যটি প্রয়োজন।


আমি আপনার প্রশ্নের উত্তর দিতে আমার ওপি আপডেট করেছি। আপনার সন্দেহ শুরু থেকেই শুরু হয়েছিল: পুনরায় বুট করার জন্য চালিত স্ক্রিপ্টটি একটি মাউন্টযোগ্য /dev/mapper/VolGroup00-LogVol01পার্টিশনে থাকতে পারে on
24:56

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

0

আমি প্রশ্নের জন্য হ্যাঁ বলব। কেবল পুনরায় বুট করার সময় ক্রোন চালাতে সমস্যা হয়েছিল (দেবিয়ান 3.10.70) এবং এর সাথে সমাধান করতে পরিচালিত:

@reboot root /usr/bin/python3 /path/to/script

এবং শেষে একটি নতুন লাইনের চরিত্র '\ n'

এটি ফাইলের বিষয়বস্তু:

/etc/cron.d/runOnReboot

পরিশেষে, আমি মনে করি এটি একটি বিমূর্ত বিষয়টি লক্ষনীয় man 5 crontab

... ক্রোন কমান্ডের ফর্ম্যাটটি অনেকগুলি upর্ধ্বমুখী-সামঞ্জস্যপূর্ণ এক্সটেনশন সহ ভি 7 স্ট্যান্ডার্ড। প্রতিটি লাইনের পাঁচটি সময় এবং তারিখ ক্ষেত্র থাকে, তারপরে একটি কমান্ড এবং তার পরে একটি নতুন লাইন অক্ষর ('\ n') থাকে। কমান্ডের জন্য ব্যবহারকারীর নাম সময় এবং তারিখের ক্ষেত্রের পরে এবং কমান্ডের আগে নির্দিষ্ট করা ব্যতীত সিস্টেম ক্রোনট্যাব (/ etc / crontab) একই বিন্যাস ব্যবহার করে। ক্ষেত্রগুলি স্পেস বা ট্যাব দ্বারা পৃথক করা যেতে পারে। কমান্ড ফিল্ডের সর্বাধিক অনুমোদিত দৈর্ঘ্য 998 টি অক্ষর। ...


-1

prueba:

ইউসারিও @ উবুন্টু: ~ $ টাচ স্ক্রিপ্ট.শ ইউএসারিও @ উবুন্টু: ~ mod চিমড + এক্স স্ক্রিপ্ট.শ

ইউসারিও @ উবুন্টু: ~ $ $ ক্রোনট্রাব -e

@reboot / home/usuario/script.sh

আপনার পিসি সংরক্ষণ এবং পুনরায় চালু করুন

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