নির্বাচিত উত্তরটি একাধিক সেশনের সাথে বেশ ভাল কাজ করে না এবং কোনও কাস্টম লগ ফাইলের নাম নির্দিষ্ট করার অনুমতি দেয় না।
একাধিক স্ক্রিন সেশনের জন্য, এটি আমার সূত্র:
প্রতিটি প্রক্রিয়ার জন্য একটি কনফিগারেশন ফাইল তৈরি করুন:
logfile test.log
logfile flush 1
log on
logtstamp after 1
logtstamp string "[ %t: %Y-%m-%d %c:%s ]\012"
logtstamp on
আপনি যদি "ফ্লাইতে" করতে চান তবে আপনি logfile
স্বয়ংক্রিয়ভাবে পরিবর্তন করতে পারেন ।
\012
, "নতুন লাইন" অর্থ হিসেবে ব্যবহার \n
লগ ফাইল তে এটি প্রিন্ট হবে: উৎস ।
"-C" এবং "-L" পতাকা দিয়ে আপনার কমান্ডটি শুরু করুন:
screen -c ./test.conf -dmSL 'Test' ./test.pl
এটাই. প্রথম ফ্লাশের পরে আপনি "টেস্ট.লগ" দেখতে পাবেন:
...
6 Something is happening...
[ test.pl: 2016-06-01 13:02:53 ]
7 Something else...
[ test.pl: 2016-06-01 13:02:54 ]
8 Nothing here
[ test.pl: 2016-06-01 13:02:55 ]
9 Something is happening...
[ test.pl: 2016-06-01 13:02:56 ]
10 Something else...
[ test.pl: 2016-06-01 13:02:57 ]
11 Nothing here
[ test.pl: 2016-06-01 13:02:58 ]
...
আমি দেখতে পেলাম যে "-L" এখনও কনফিগারেশন ফাইলে "লগ ইন" থাকা অবস্থায় থাকা আবশ্যক।
আমি স্ক্রিন দ্বারা ব্যবহৃত টাইম ফর্ম্যাট ভেরিয়েবলগুলির (যেমন% মি) একটি তালিকা পাইনি। যদি আপনার কাছে সেই ফর্ম্যাটগুলির একটি লিঙ্ক থাকে তবে দয়া করে এটি পোস্ট করুন।
অতিরিক্ত
আপনি যদি "ফ্লাইতে" করতে চান তবে আপনি এই স্ক্রিপ্টটি ব্যবহার করতে পারেন:
#!/bin/bash
if [[ $2 == "" ]]; then
echo "Usage: $0 name command";
exit 1;
fi
name=$1
command=$2
path="/var/log";
config="logfile ${path}/${name}.log
logfile flush 1
log on
logtstamp after 1
logtstamp string \"[ %t: %Y-%m-%d %c:%s ]\012\"
logtstamp on";
echo "$config" > /tmp/log.conf
screen -c /tmp/log.conf -dmSL "$name" $command
rm /tmp/log.conf
এটি ব্যবহার করতে, এটি সংরক্ষণ করুন (স্ক্রিন.শ) এবং + এক্স অনুমতি সেট করুন:
./screen.sh TEST ./test.pl
... এবং ./test.pl সম্পাদন করবে এবং /var/log/TEST.log এ একটি লগ ফাইল তৈরি করবে