কনসোল নেভিগেশন ক্রোন কাজ আউটপুট

আমি একটি শেল স্ক্রিপ্ট লিখেছি ( myscript.sh ):

#!/bin/sh
ls
pwd

আমি প্রতি মিনিটে এই কাজের সময় নির্ধারণ করতে চাই এবং এটি কনসোল প্রদর্শন করা উচিত। যাতে আমি crontab -e সম্পন্ন করেছি:

*/1 * * * * /root/myscript.sh

এখানে, কনসোলের প্রিন্ট করার পরিবর্তে ফাইলটি /var/mail/root এ প্রদর্শিত হবে।

কনসোলের আউটপুটটি মুদ্রণ করার জন্য আমাকে কি পরিবর্তনগুলি করতে হবে?

0
যোগ সম্পাদিত
মতামত: 1

2 উত্তর

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

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

*/1 * * * * /root/myscript.sh | tee -a /path/to/logfile.log

কনসোল ইন:

tail -F /path/to/logfile.log

এই সমস্যাটি হল যে আপনি একটি ক্রমবর্ধমান লগ ফাইল পাবেন যা সময়মত মুছে ফেলা হবে।

এটি এড়ানোর জন্য আপনাকে আরও জটিল কিছু করতে হবে যাতে আপনি কনসোল পিনকে চিহ্নিত করতে পারেন যা আপনি একটি পূর্বনির্ধারিত জায়গায় লিখতে এবং সংরক্ষণ করতে চান।

কনসোল স্ক্রিপ্ট:

#!/usr/bin/env bash

# register.sh script    
# prints parent pid to special file

echo $PPID > /path/to/predfined_location.txt

crontab জন্য wrapper স্ক্রিপ্ট

#!/usr/bin/env bash

cmd=$1
remote_pid_location=$2

# Read the contents of the file into $remote_pid.
# Hopefully the contents will be the pid of the process that wants the output 
# of the command to be run.
read remote_pid < $remote_pid_location

# if the process still exists and has an open stdin file descriptor
if stat /proc/$remote_pid/fd/0 &>/dev/null
then
    # then run the command echoing it's output to stdout and to the
    # stdin of the remote process
    $cmd | tee /proc/$remote_pid/fd/0 
else
    # otherwise just run the command as normal
    $cmd
fi

crontab ব্যবহার:

*/1 * * * * /root/wrapper_script.sh /root/myscript.sh /path/to/predefined_location.txt

এখন আপনি যা করতে হবে তা হল register.sh কনসোলের মধ্যে যা আপনি প্রিন্ট করতে চান।

0
যোগ
আমরা ফাইলের মধ্যে পুনঃনির্দেশিত করার পরিবর্তে পর্দায় প্রতিটি মিনিটের পরে আউটপুট প্রিন্ট করতে পারি?
যোগ লেখক Sasikiran Vaddi, উৎস
আমি আপনাকে উল্লিখিত একই পদ্ধতি অনুসরণ করা হয়েছে। কিন্তু এটি/bin/sh: /root/rrontest/wrapper.sh এর মত বার্তা প্রদান করছে: অনুমতি/var/mail/root এ অস্বীকার করা হয়েছে। আমি এই এক দেওয়া হয় কেন বুঝতে পারবেন না।
যোগ লেখক Sasikiran Vaddi, উৎস
আমি এখন execute অনুমতি দেওয়া এবং register.sh চালানো করার চেষ্টা করে এটি এই/var/mail/root এর মত দেখাচ্ছে, /root/rrontest/wrapper.sh: লাইন 6: /root/crontest/register.txt: যেমন কোন ফাইল বা ডিরেক্টরি এবং "ls, pwd" এর আউটপুট প্রদর্শন করা প্রকৃতপক্ষে আমি এক সন্দেহ ছিল, যে আমি myscript.sh লিখতে হবে console.sh যেখানে আপনি # register.sh মত মন্তব্য করেছেন
যোগ লেখক Sasikiran Vaddi, উৎস
আমি মনে করি এটি স্বয়ংক্রিয়ভাবে তৈরি হবে, তাই আমি ফাইলটি register.txt তৈরি করা হয়নি এখন, আমি file.txt ফাইল তৈরি করেছি। কিন্তু এখন আমি register.sh চালানোর সময় "কমান্ড পাওয়া যায় নি", কিন্তু আউটপুট প্রতি এক মিনিটের জন্য/var/mail/root ফাইলে ফাইল পুনঃনির্দেশিত হচ্ছে।
যোগ লেখক Sasikiran Vaddi, উৎস
তাই আপনি মূলত সমগ্র আউটপুট ক্যাপচার করতে চান এবং তারপর হঠাৎ আপনার একবার আপনার কনসোল মুদ্রণ? আপনি কি দ্বিতীয় সমাধানটি চেষ্টা করেছেন যা কোনও ফাইলে পুনঃনির্দেশিত হয় না?
যোগ লেখক Dunes, উৎস
বেশিরভাগের মত যে আপনি wrapper.sh যাও চালানো অনুমতি দেওয়া হয়নি
যোগ লেখক Dunes, উৎস
Wrapper স্ক্রিপ্ট অভিযোগ করছে যে register.txt বিদ্যমান নয়। এটা কি বিদ্যমান? আপনি register.sh এখনও চালানো আছে?
যোগ লেখক Dunes, উৎস

আমি একটি গনোম টার্মিনাল একটি ক্রোন কাজের আউটপুট অর্জন করার চেষ্টা, এবং এই দ্বারা পরিচালিত

*/1 * * * * /root/myscript.sh > /dev/pts/0

আমি অনুমান করি আপনি যদি একটি GUI না থাকে এবং আপনি শুধুমাত্র CLI ব্যবহার করতে পারেন

*/1 * * * * /root/myscript.sh > /dev/tty1

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

0
যোগ