টার্মিনালে ক্রোন জব থেকে আউটপুট পাওয়া


15

আমার একটি প্রোগ্রাম রয়েছে যা কিছু আউটপুট প্রিন্ট করে যা আমি ওয়ার্কডে প্রতি ঘন্টা একবার আমার টার্মিনালে পপ আপ করতে চাই।

$ crontab -l
0 07-17 * * * /home/dat/scripts/cron.out

সিসলগ নিম্নলিখিত রিপোর্ট করে:

(dat) CMD (/home/dat/scripts/cron.exe)
Jun 18 12:02:01 picard CRON[10848]: (CRON) info (No MTA installed, discarding output)

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


ক্রোন জবসগুলি কোনও টার্মিনালে লেখার কথা নয় - সেখানে কোনও কিছুই উপলভ্য নয়।
গুটবার্ট

উত্তর:


14

নোংরা উপায়টি হ'ল আপনার প্রোগ্রামের আউটপুটটিকে ইতিমধ্যে বিদ্যমান টার্মিনালের পিটিএস ফাইলে পুনর্নির্দেশ করা ।

Pts ফাইলটি জানতে ttyকমান্ডটি টাইপ করুন

~$ tty
/dev/pts/4

তাহলে আপনার ক্রোনটবটি হ'ল:

0 07-17 * * * /home/dat/scripts/cron.out > /dev/pts/4

আরেকটি উপায় হতে পারে টার্মিনালের আর্গুমেন্ট হিসাবে প্রোগ্রামটি চালু করা:

xfce4-terminal --command=/home/dat/scripts/cron.out --display=:0.0 -H

যেখানে displayএক্স প্রদর্শন যেখানে আপনি টার্মিনাল দেখাতে চান হয়,-H পরে কমান্ড সমাপ্ত করা হয়ে থাকে খোলা থাকার টার্মিনাল বলতে হয়। এটি প্রতিবার একটি নতুন টার্মিনাল তৈরি করবে।

নিম্নলিখিতরূপে crontab পরিবর্তন:

0 07-17 * * * /usr/bin/xfce4-terminal --display=:0.0 -H --command=/home/dat/scripts/cron.out

যদি ডিসপ্লেটি উপস্থিত না থাকে তবে আপনার সিস্টেমে লগ করা একটি ত্রুটি থাকবে।


6

ক্রোন আপনাকে আপনার স্ক্রিপ্টের আউটপুট ইমেল করে। দুর্ভাগ্যক্রমে, উবুন্টু ডিফল্টরূপে স্থানীয় মেল সেট আপ করে না , এ কারণেই ক্রোন আপনাকে " এমটিএ ইনস্টল করা হয়নি, আউটপুট ছাড়ছে না" লগগুলিতে বলে ।

লোকাল মেল সেট আপ করা আপনার সমস্যার সমাধানের এক উপায় হতে পারে। একটি টার্মিনালে আউটপুট পরিবর্তে, আপনি একটি ইমেল বিজ্ঞপ্তি পেতে চাই।

আপনি যদি আপনার ক্রোন জবটি কোনও টার্মিনালে আউটপুট করতে চান তবে আপনাকে এর আউটপুটটি টার্মিনালে পুনর্নির্দেশ করতে হবে । পুনঃনির্দেশ অংশটি সহজ -

0 07-17 * * * /home/dat/scripts/cron.out >/dev/pts/42 2>&1

তবে সমস্যাটি নির্ধারণ করছে যে কোন টার্মিনালটিতে পুনর্নির্দেশ করা হবে। এর কোনও সার্বজনীন উত্তর নেই, এটি আপনি লগইন করেছেন এমনদের মধ্যে কীভাবে আপনি টার্মিনালটি নির্বাচন করতে চান তা নির্ভর করে।

সাধারণ ব্যবহারের জন্য, একটি জিইউআই বিজ্ঞপ্তি আরও উপযুক্ত হবে। আপনি ব্যবহার করতে পারেন notify-send। আপনাকে করতে হবে সেট DISPLAYএনভায়রনমেন্ট ভেরিয়েবল

0 07-17 * * * DISPLAY=:0 notify-send "$(/home/dat/scripts/cron.out)"

2

ক্রোন কোনও মেলারের কাছে আউটপুট প্রেরণ করে। যদি আপনি কোনও টার্মিনালে আউটপুট দেখতে চান তবে আপনি একটি ফাইলে লগইন করতে পারেন এবং টার্মিনালে আউটপুট দেখতে টেল-ফ ব্যবহার করতে পারেন


একটি ফাইল লগ ইন করুন

  • এর সহজ উত্তরটি হ'ল ক্রন্টব এন্ট্রি সহ কোনও ফাইলে সরাসরি লগইন করা:

0 07-17 * * * /home/dat/scripts/cron.out > /path/to/log.txt 2> /path/to/error.txt

লগ করার বিকল্প উপায়:

  • যদি আপনার প্রোগ্রামটি এমন কোনও স্ক্রিপ যা এতে লেখা যেতে পারে তবে আপনি এটিকে একটি লগ ফাইলে আউটপুট পুনর্নির্দেশের জন্য পরিবর্তন করতে পারেন। echo output > log.txt, বা আপনি নীচে বর্ণিত একটি মোড়ক স্ক্রিপ্ট ব্যবহার করতে পারেন ।
  • যদি আপনার প্রোগ্রামটি বাইনারি হয় বা অন্যথায় অ-লিখিত হয়, তবে আপনাকে অবশ্যই কোনও ফাইলের আউটপুট ক্যাপচার করতে র‌্যাপার স্ক্রিপ্ট লিখতে হবে।

প্রোগ্রাম এবং মোড়ক স্ক্রিপ্ট উদাহরণ:

$ cat program.sh wrapper.sh 
#!/bin/bash
# sample program
echo "arg 1=$1 arg2=$2 arg3=$3"
echo "sample error" >&2 

#!/bin/bash
# sample wrapper
exec ./program.sh "$@" >log.txt 2> error.txt

উদাহরণ রান 1:

$ ./wrapper.sh 1 2 3 ; cat error.txt  log.txt 
sample error
arg 1=1 arg2=2 arg3=3

রান 2 উদাহরণ:

$ ./wrapper.sh "A B C" D E ; cat error.txt log.txt 
sample error
arg 1=A B C arg2=D arg3=E

টার্মিনালে আউটপুট দেখুন:

এখন আপনার উভয় মান আউট এবং একটি ফাইলে মান ত্রুটি, কোন টার্মিনাল লগ-ইন, আপনি চালাতে পারেন tail -fএক বা উভয় ফাইল মত tail -f log.txtবা tail -f log.txt error.txtযাতে লেজ ঘড়ি অথবা বরং সংশোধনী জন্য ফাইল (গুলি) অনুসরণ করা হবে। লেজ ম্যান পাতা

$ tail -f log.txt  error.txt
==> log.txt <==
arg 1=1 arg2=2 arg3=3

==> error.txt <==
sample error

লগিং ফাইল পরে সংযুক্ত:

যদি log.txt বা error.txt পরে আপনার প্রোগ্রাম বা অন্য কোনও টার্মিনাল থেকে যুক্ত হয় তবে $ echo "more output" >> log.txtআউটপুট টার্মিনালে চলতে দেখা যায়$ tail -f log.txt error.txt

==> log.txt <==
more output

তদ্ব্যতীত, $ echo code red >> error.txtফলাফলগুলি:

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