যদি কেউ সত্যই ডেটা চাইছিল, আমি জিডিবি ডিবাগরের সাথে পাইথন ইন্টারপ্রেটার সংযুক্ত করার পরামর্শ দেব , মুহূর্তের মধ্যে টাস্ক বন্ধ করে, কল fsync(1)
( স্টাডআউট ) করা, এটি থেকে বিচ্ছিন্ন হওয়া (প্রক্রিয়াটি পুনরায় শুরু করা) এবং আউটপুট ফাইলটি অনুধাবন করা উচিত।
অল্পক্ষণের /proc/$(pidof python)/fd
বৈধ ফাইল বর্ণনাকারী দেখতে। $(pidof x)
' x
' নামক প্রক্রিয়াটির পিআইডি প্রদান করে ।
# your python script is running merrily over there.... with some PID you've determined.
#
# load gdb
gdb
#
# attach to python interpreter (use the number returned by $(pidof python))
attach 1234
#
# force a sync within the program's world (1 = stdout, which is redirected in your example)
call fsync(1)
#
# the call SHOULD have returned 0x0, sync successful. If you get 0xffffffff (-1), perhaps that wasn't stdout. 0=stdin, 1=stdout, 2=stderr
#
# remove our claws from poor python
detach
#
# we're done!
quit
আমি এই পদ্ধতিটি কাজ করার ডিয়ারগুলি পরিবর্তন করতে, উড়ে যাওয়ার সেটিংগুলি টুইট করার জন্য ব্যবহার করেছি ... অনেক কিছুই। হায়রে, আপনি কেবল চলমান প্রোগ্রামে সংজ্ঞায়িত ফাংশনগুলি কল করতে পারেন, fsync
যদিও দুর্দান্তভাবে কাজ করে।
(gdb কমান্ড ' info functions
' সমস্ত উপলব্ধ ক্রিয়াকলাপের তালিকা প্রদর্শন করবে। তবে সাবধানতা অবলম্বন করুন। আপনি একটি প্রক্রিয়াতে লাইভ পরিচালনা করছেন ))
এছাড়াও কমান্ডটি রয়েছে peekfd
( psmisc
দেবিয়ান জেসি এবং অন্যান্যদের প্যাকেজে পাওয়া যায় ) যা আপনাকে কোনও প্রক্রিয়াটির বাফারগুলিতে কী লুকিয়ে রয়েছে তা দেখার অনুমতি দেয়। আবার, /proc/$(pidof python)/fd
আপনাকে পিকফিডে যুক্তি হিসাবে বৈধ ফাইল বর্ণনাকারী দেখিয়ে দেবে।
আপনি মনে করতে না পারেন -u
পাইথন, আপনি সর্বদা একটি কম্যান্ড পূর্বে ভী করতে stdbuf
(ইন coreutils
ইতিমধ্যে ইনস্টল,) সেটে stdin / stdout- এ / দ্বারা stderr unbuffered, লাইন বাফার অথবা অবরোধ পছন্দসই হিসাবে বাফার করুন:
stdbuf -i 0 -o 0 -e 0 python myscript.py > unbuffered.output
অবশ্যই, man pages
আপনার বন্ধু, আরে! সম্ভবত একটি উপনাম এখানে দরকারী হতে পারে।
alias python='python -u'
এখন আপনার অজগরটি সর্বদা আপনার -u
সমস্ত কমান্ড লাইন প্রচেষ্টার জন্য ব্যবহার করে !