এটি শেষ হওয়ার পূর্বে `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সেই ফাইলটির সময় নির্ধারণ করবেন?
মুড়ু

@ মুরু, চলুন আমি ভেবেছি আমি ইতিমধ্যে স্ক্রিপ্টটি ব্যবহার না করে চালিয়েছি 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কারণ এতে থাকা ডিরেক্টরিটি বিশ্ব-অ্যাক্সেসযোগ্য নয় (কমপক্ষে উবুন্টু 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 (ডিসেম্বর) = 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
                                              -----

তারপরে আপনি stdout দেখতে পারেন

drew@sokar:~$ sudo less /var/spool/cron/atspool/a0002601856a0f
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.