স্ক্রিপ্ট ক্রন্টব দিয়ে সঞ্চালিত হয় না তবে সূক্ষ্ম একক কাজ করে


51

আমার কাছে একটি স্ক্রিপ্ট রয়েছে যা আমার কম্পিউটারকে পুনরায় আরম্ভ করতে স্মরণ করিয়ে দেয় যদি uptime3 দিনের বেশি হয় তবে এটি বলতে এখন কেবল 0 দিন নির্ধারণ করা হয়েছে (যদিও এখন কেবল কম্পিউটারটি স্ক্রিনটি চালিত হচ্ছে কিনা তা পরীক্ষা করতে কেবল একদিন ধরেই শেষ হয়েছে ..)।

আমি বুঝতে পারি এটি সর্বাধিক মার্জিত স্ক্রিপ্ট নয় তবে আমি চেষ্টা করছি! :)

#!/bin/bash

up=$(uptime | grep "day" > /home/username/uptime.foo && awk < /home/username/uptime.foo '{ print $3 }')

[[ $up -gt 0 ]] && xmessage -center "Restart!"

আমি এটিকে সম্পাদনযোগ্য করে তুলেছি chmod + x checkup.shএবং এটি টার্মিনালের মধ্য দিয়ে চালালে এটি কাজ করে./checkup.sh

এই স্ক্রিপ্টের জন্য আমার ক্রোনটব এন্ট্রিটি হ'ল:

46 14 * * * /home/username/Desktop/./checkup.sh

তাই এটি প্রতিদিন 14: 46 ঘন্টা বেগে চলে ...

সুতরাং ... আমি ভাবছি এটি চালানো উচিত, যদি না আমি সত্যিই নির্বোধ কিছু না করি। এছাড়াও, আপনি কি মনে করেন যে এই বাশ স্ক্রিপ্টটি এতে স্থানান্তর করা ঠিক আছে /bin?


1
প্যাকেজগুলি মনে করে যে জিনিসগুলি আপত্তিজনক নয় সেখানে আমি এটি সাধারন সর্বোত্তম অনুশীলন হিসাবে / অপ্ট / বিন বা ~ / বিনে রেখে দেব।
রোবটহুমানস

আপনি যদি স্ক্রিপ্টটি এর মতো চালান: / home/dnaneet/Desktop/./checkup.sh এটি কাজ করে? আমি / home
Desktop/

@LnxSlck হ্যাঁ, দৌড়াদৌড়িটি ঠিকঠাক /home/dnaneet/Desktop/./checkup.shকাজ করে। তবে /home/dnaneet/Desktop/checkup.shকি ঠিক কাজ করা যাবে না? কারণ এটি একটি প্রয়োজন ./?
প্রিয়জন

1
আমি মনে করি না ক্রোন আপনার এক্স সেশন সম্পর্কে কিছু জানে।
গ্লেন জ্যাকম্যান

@glennjackman সুতরাং এর অর্থ কী? এর অর্থ কী ক্রোনটাবের মাধ্যমে এই জাতীয় স্ক্রিপ্ট চালানো কোনও পপ আপ বার্তাটি জিনোম পরিবেশে প্রদর্শিত হতে দেয় না?
প্রিয়জন

উত্তর:


71

একটি সময়ে একটি বিষয়:

প্রথমে আপনাকে একটি ব্যবহারকারী ভিত্তিক বিন ফোল্ডার দেই:

cd ~/ && mkdir bin

আপনি crontab ব্যবহার করতে চান। আসুন খুব সহজ কিছু দিয়ে শুরু করা যাক:

* * * * * touch /tmp/testing.txt

ঠিক আছে, কাজ করে

এখন একই স্ক্রিপ্ট চালানোর চেষ্টা করি

* * * * * /home/username/bin/touchtest.sh

আপনি এটি কাজ করে
না পাওয়া পর্যন্ত এক মিনিটে একবার চালাবেন না লাইনের মাঝখানে আপনার একটি ./ প্রয়োজন হবে না। ./ হ'ল আপনি যখন আপেক্ষিক ইউআরএল দিচ্ছেন তখন।
ঠিক আছে, কাজ করে

এখন xmessage কল করে এমন একটি স্ক্রিপ্ট চালানোর চেষ্টা করি

* * * * * /home/username/bin/rebootwarn.sh

কাজ করছে না

প্রথমে আমাদের পরিবেশের পরিবর্তনশীলগুলির উপর নির্ভর করতে হবে না। এর মধ্যে পাথ সেটিং, এক্স 11 সেটিংস বা অন্য কিছু অন্তর্ভুক্ত রয়েছে (অজগর এবং রুবি পরিবেশের পরিবর্তনগুলি মাথায় আসে ...)

আসুন আমাদের এনাক্রনের যথাযথ ক্রোন ফাইলের মতো দেখতে কিছুটা করা যাক..আমি এটি পরীক্ষা হিসাবে সংরক্ষণ করেছি

#Borrowed from anacron
SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
#End borrowed from anacron

* * * * *   /bin/bash /home/username/bin/test.sh

মিনিটে একবার চালানোর জন্য সেট করুন

crontab test এটি আমদানি করতে

স্ক্রিপ্টে

#!/bin/bash
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
export DISPLAY=:0.0
up=$(uptime | grep "day" > /home/dnaneet/uptime.foo && awk < /home/dnaneet/uptime.foo '{ print $3 }')

[[ $up -gt 0 ]] && xmessage -center "Restart!"`

ঠিক আছে, কাজ করে ... আমরা কি করলাম?
আমরা যে কমান্ডগুলি স্পষ্টভাবে সেট করি নি তার উপর নির্ভর না করার জন্য সমস্ত কমান্ডকে পরিবর্তন করেছি
আমরা আমাদের স্ক্রিপ্টটি বাশ দিয়ে স্পষ্টভাবে চালিয়েছি
আমরা স্ক্রিপ্টটি বলেছিলাম যে আমরা DISPLAY তে থাকব বলে আশা করি: ০.০


উত্তরের জন্য ধন্যবাদ. আপনি বলেছিলেন "আসুন আমাদের এনাক্রনের যথাযথ ক্রোন ফাইলের মতো দেখতে কিছুটা করুন ... আমি এটি পরীক্ষার হিসাবে সংরক্ষণ করেছি" .. আমাদের কী? ক্রন্টব ফাইল? :-/
প্রিয়জন

আমি যা পর্যবেক্ষণ করেছি তা এখানে। প্রথমে আমাকে =রেখাটি নির্দিষ্ট করার আগে এবং পরে স্থানটি ছাড়িয়ে যেতে হয়েছিল DISPLAY। দ্বিতীয়ত, যখন আমি আমার ক্রন্টব ফাইলটি সম্পাদনা করেছি এবং PATHপ্রস্তাবিত হিসাবে যুক্ত করেছি এবং পরে চালানোর সময় নির্ধারণ করেছি, তখন পপ আপ উইন্ডোটি প্রদর্শিত হয়নি। যাইহোক, পপআপ উইন্ডোটি ব্যবহার করে স্ক্রিপ্টটি চালানোর সময় ঠিকঠাক দেখায় /bin/bash... কী দেয়?
প্রিয়

আপনি কী জানেন, একবার আমি আমার স্ক্রিপ্টটি পরিবর্তিত করেছি export DISPLAY=:0.0, এটি দুর্দান্ত কাজ করেছে। যদিও আমার পপ-আপ উইন্ডোটি ঘড়ির কাঁটাঘণ্টাটি দেখানোর পরে প্রায় 5 সেকেন্ডের মধ্যে উল্লেখযোগ্য ল্যাং ছিল ... কোনও পরামর্শ? তবে হ্যাঁ, স্ক্রিপ্টে আপনার সংশোধনীগুলি কাজ করে!
প্রিয়এন

5 সেকেন্ড ল্যাগের কোনও ধারণা নেই।
রোবটহুমানস

3
আপনি এই ধাপে ধাপে ধাপে যেভাবে গিয়েছিলেন এবং তার সংক্ষিপ্তসারটি করেছেন তা আমি পছন্দ করি - ধন্যবাদ!
jbobbins

10

গুগলে ম্যানুয়ালটি পড়ে সমস্যার সমাধান হয়েছিল:

বিবরণ:

  1. #!/bin/bashশিরোনাম হিসাবে ব্যবহার করে আমার স্ক্রিপ্ট আছে
  2. আমি স্ক্রিপ্ট লাগিয়েছি /home/wc3/palert/

বিশ্লেষণ:

  1. ক্রন্টব আমার স্ক্রিপ্ট চালাতে পারে না
  2. তবে আমি যদি ম্যানুয়ালি রান করি তবে এটি আউটপুটটি দেখায় এবং ফলাফলটি আমি আমার ওয়েবে দেখতে পাচ্ছি
  3. এর অর্থ আপনি যখন আপনার স্ক্রিপ্ট ফোল্ডারে স্ক্রিপ্টটি চালাবেন তখন ক্রন্টব পরিবেশের মতো পরিবেশ পাবে না

উত্তর:

  1. আপনার স্ক্রিপ্টের নীচে এই লাইনটি ব্যবহার করে আপনার পরিবেশটি এতে রাখুন:

    PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/home/wc3/palert
    

    এটি পরিবর্তন করুন: এর /home/wc3/palert
    সাথে: আপনি যেখানে আপনার স্ক্রিপ্টটি রেখেছেন/home/budi/script.sh

নমুনা:

#!/bin/bash
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/home/budi
# Script continues...

আপনার স্ক্রিপ্টটি crontab এ রাখার চেষ্টা করুন।


আমার জন্য কাজ করে না
জন জো

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