पूर्ण होने से पहले `at` आउटपुट पर पीक


8

मान लें कि मैं atलिनक्स पर एक स्क्रिप्ट चलाता हूं (उदाहरण के लिए) जो मुझे पता है कि कई घंटे लगेंगे, या शायद कई दिन भी। मैं atकमांड के आउटपुट के साथ एक ईमेल भेजने का आदी हूं , जब यह पूरा हो जाता है, लेकिन क्या होगा अगर मैं इसे पूरा करने से पहले वर्तमान आउटपुट में झांकना चाहता था ? चलिए यह भी मान लेते हैं कि मैंने पहले ही स्क्रिप्ट चला ली है और आउटपुट tail, teeया अन्य समान तरीकों का उपयोग करके रीडायरेक्ट करना भूल गया है और स्क्रिप्ट को रोकना नहीं चाहता। क्या ऐसा करने के लिए कोई रास्ता है?

drew@anubis:~$ at now
warning: commands will be executed using /bin/sh
at> ./myscript.sh
at> <EOT>
job 3 at Sat Jan  7 09:31:00 2017

चोटी या झांकना? आप यह देखना चाहते हैं कि इसे करते समय इसका क्या होगा?
जर्नीमैन गीक

@ जौरमैनमैन गीक, उफ़। पीक वह होगा जो मुझे टाइप करने का मतलब है। मैं देखना चाहता हूं कि यह क्या कर रहा है।
चैपिन

जब आप नौकरी और tail -fउस फ़ाइल को शेड्यूल करते हैं, तो स्क्रिप्ट आउटपुट को किसी फ़ाइल में रीडायरेक्ट करें ?
मूरू

@ muru, आइए दिखाते हैं कि मैं पहले ही स्क्रिप्ट का उपयोग किए बिना चला रहा हूं tailऔर इसे रोकना नहीं चाहता।
चैपिन

मुझे परीक्षण करने की आवश्यकता होगी, लेकिन टी का उपयोग करने के लिए स्क्रिप्ट को संशोधित करना होगा, और आउटपुट को फ़ाइल में सहेजना होगा, फिर इसे काम करना होगा?
जर्नीमैन गीक

जवाबों:


9

यदि नौकरी शुरू हो गई है, और आपके पास उस नौकरी के पीआईडी ​​प्राप्त करने का कुछ तरीका है, तो आप देख सकते हैं atकि आउटपुट कहाँ बचा रहा है:

$ at now
warning: commands will be executed using /bin/sh
at> sleep 10m
at> <EOT>
job 7 at Sat Jan  7 20:18:00 2017
$ pgrep sleep
7582
$ ls -l /proc/7582/fd
total 0
lr-x------ 1 muru muru 64 Jan  7 20:19 0 -> /var/spool/cron/atjobs/a0000701795998 (deleted)
lrwx------ 1 muru muru 64 Jan  7 20:19 1 -> /var/spool/cron/atspool/a0000701795998
lrwx------ 1 muru muru 64 Jan  7 20:19 2 -> /var/spool/cron/atspool/a0000701795998

जैसा कि आप देख सकते हैं, आउटपुट एक अस्थायी फ़ाइल में सहेजा गया है, जिसे आप अब देख सकते हैं:

$ sudo tail -f /var/spool/cron/atspool/a0000701795998
Subject: Output from your job        7
To: muru

आपको इसकी आवश्यकता है sudoक्योंकि युक्त निर्देशिका विश्व-सुलभ नहीं है (कम से कम Ubuntu 14.04 पर):

$ sudo namei -lx /var/spool/cron/atspool/a0000701795998
f: /var/spool/cron/atspool/a0000701795998
Drwxr-xr-x root     root   /
drwxr-xr-x root     root   var
drwxr-xr-x root     root   spool
drwxr-xr-x root     root   cron
drwxrwx--T daemon   daemon atspool
-rw------- muru     muru   a0000701795998

1
आप सर, मेरे हीरो हैं! यह पूरी तरह से काम किया!
चैपिन

4
मैं हालांकि जोड़ना चाहूंगा, कि अगर आप जानते हैं कि आप केवल एक ही atकाम कर रहे हैं । आपको पीआईडी ​​की भी आवश्यकता नहीं है। आप बस चला सकते हैं sudo ls /var/spool/cron/atspoolऔर यह होना चाहिए, सिद्धांत रूप में वहां एकमात्र फ़ाइल होनी चाहिए।
ड्रू चैपिन

0

यह निर्धारित करने का एक अन्य तरीका है कि आपकी नौकरी किस स्पूल फ़ाइल की है, जॉब नंबर प्राप्त करना है atq

drew@sokar:~$ atq
38      Tue Jul 10 12:15:00 2018 = drew

नौकरी की संख्या को हेक्स में परिवर्तित करें। उदाहरण 38 (dec) = 26 (हेक्स)।

drew@sokar:~$ printf "%x\n" 38
26

आपकी फ़ाइल का नाम कतार पत्र (99% समय, यह होगा a) के बाद 5 अंकों की हेक्स जॉब आईडी होगी (मैंने इसे atकमांड के स्रोत कोड को देखकर सीखा )।

drew@sokar:~$ sudo ls -l /var/spool/cron/atspool
total 55968
-rw------- 1 drew drew       49 Feb 16  2017 a0001c017a3cb2
-rw------- 1 drew drew 57297586 Feb 26  2017 a0001e017a7405
-rw------- 1 drew drew     2329 Jul 10 12:21 a0002601856a0f
                                              -----

तब आप स्टडआउट देख सकते हैं

drew@sokar:~$ sudo less /var/spool/cron/atspool/a0002601856a0f
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.