कंसोल पर क्रॉन नौकरियां उत्पादन

मैंने एक शेल स्क्रिप्ट लिखी है ( 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 के लिए रैपर स्क्रिप्ट

#!/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

क्रोंटैब उपयोग:

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

अब आपको बस इतना करना है कि कंसोल में register.sh चलाएं, जिसे आप प्रोग्राम प्रिंट करना चाहते हैं।

0
जोड़ा
क्या हम फ़ाइल में रीडायरेक्ट करने के बजाए स्क्रीन पर हर मिनट के बाद समय-समय पर आउटपुट प्रिंट कर सकते हैं?
जोड़ा लेखक Sasikiran Vaddi, स्रोत
मैंने उसी प्रक्रिया का पालन किया है जिसका आपने उल्लेख किया है। लेकिन यह संदेश/bin/sh: /root/crontest/wrapper.sh जैसे संदेश दे रहा है: अनुमति/var/mail/root में अनुमति अस्वीकार कर दी गई है। मैं समझ नहीं पा रहा हूं कि यह क्यों दे रहा है।
जोड़ा लेखक Sasikiran Vaddi, स्रोत
मैंने अभी निष्पादन अनुमतियां दी हैं और register.sh निष्पादित करने का प्रयास किया है। यह/var/mail/root में इस तरह दिख रहा है, /root/crontest/wrapper.sh: पंक्ति 6: /root/crontest/register.txt: ऐसा नहीं फ़ाइल या निर्देशिका और "ls, pwd" के आउटपुट को प्रदर्शित करने के असल में मुझे एक संदेह था, क्या मुझे console.sh में myscript.sh रखना है जहां आपने # register.sh की तरह टिप्पणी की है
जोड़ा लेखक Sasikiran Vaddi, स्रोत
मैंने सोचा कि यह स्वचालित रूप से बनायेगा, इसलिए मैंने फ़ाइल register.txt फ़ाइल नहीं बनाई है, अब मैंने फ़ाइल register.txt बनाई है। लेकिन अब जब मैं register.sh चलाता हूं तो यह "कमांड नहीं मिला" दिखा रहा है, लेकिन आउटपुट हर एक मिनट के लिए फ़ाइल/var/mail/root पर रीडायरेक्ट कर रहा है।
जोड़ा लेखक Sasikiran Vaddi, स्रोत
तो आप अनिवार्य रूप से पूरे आउटपुट को कैप्चर करना चाहते हैं और फिर अचानक इसे अपने कंसोल को एक बार प्रिंट करें? क्या आपने दूसरा समाधान आज़माया जो फ़ाइल पर रीडायरेक्ट नहीं करता है?
जोड़ा लेखक Dunes, स्रोत
ज्यादातर इस तरह आपने wrapper.sh को निष्पादित अनुमति नहीं दी है
जोड़ा लेखक Dunes, स्रोत
रैपर स्क्रिप्ट शिकायत कर रही है कि register.txt मौजूद नहीं है। क्या यह अस्तित्व में है? क्या आपने रजिस्टर अभी तक चलाया है?
जोड़ा लेखक Dunes, स्रोत

मैंने एक क्रोन नौकरी के आउटपुट को एक gnome टर्मिनल में प्राप्त करने की कोशिश की, और इसे इसके द्वारा प्रबंधित किया

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

मुझे लगता है कि यदि आपके पास कोई GUI नहीं है और आपके पास केवल सीएलआई है जिसका आप उपयोग कर सकते हैं

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

अपने कंसोल पर रीडायरेक्ट होने के लिए क्रॉन्टाब नौकरी के आउटपुट को प्राप्त करने के लिए।

0
जोड़ा