मैं टर्मिनल सत्र में सभी इनपुट और आउटपुट कैसे लॉग कर सकता हूं?


46

मैं टर्मिनल के माध्यम से किए गए सभी कार्यों के लॉग कैसे रखता हूं? उदाहरण के लिए, मैं टर्मिनल के माध्यम से डेटाबेस पर किए गए सभी कार्यों का रिकॉर्ड चाहता हूं।


यह भी सूडो में बनाया गया है।
विल्हेम इरास्मस

मैंने अपना उत्तर जोड़ा है जिसकी आप समीक्षा कर सकते हैं
मंसूर अली

जवाबों:


66

जब आप लॉग फ़ाइल रिकॉर्ड करना शुरू करने के लिए तैयार हों, तो टाइप करें:

script screen.log

अब, जब तक आप स्क्रिप्ट को बंद नहीं करेंगे, टर्मिनल में सभी इनपुट और आउटपुट स्क्रीन.लॉग में संग्रहीत किए जाएंगे। जब आप कर रहे हैं, बस टाइप करें:

exit

आपकी screen.log फ़ाइल स्थानीय निर्देशिका में संग्रहीत की जाएगी। यदि आप इसे पुनर्निर्देशित करना चाहते हैं, तो जैसे एक निरपेक्ष पथनाम का उपयोग करें ~/screen.log। यह वही करेगा जो आप ढूंढ रहे हैं।

स्रोत: उबंटू गाइड - टर्मिनल कमांड कैसे लॉग इन करें


हाय, उत्तर के लिए धन्यवाद। लेकिन यह काम करेगा यदि मैं निम्नलिखित अनुक्रम का उपयोग करके शेल से mysql डेटाबेस में प्रवेश करता हूं: - 1) स्क्रिप्ट स्क्रीन.लॉग 2) mysql -u <user> -p <database> 3) डेटाबेस पर कुछ काम 4) बाहर निकलें; मैं देखता हूं कि फ़ाइल screen.log बनाई गई है, लेकिन इसमें डेटाबेस के लिए लॉग नहीं हैं। मैं फ़ाइल asap साझा करेंगे। धन्यवाद
अंकित

2
यह "मानक इनपुट" (आमतौर पर आपके कीबोर्ड) से पढ़ने वाले कंसोल में चलने और मानक आउटपुट (आमतौर पर आपके टर्मिनल विंडो) पर लिखने के साथ काम करना चाहिए। तो इसमें mysql कमांड-लाइन क्लाइंट शामिल होना चाहिए। मैन पेज ( man script) में भी उल्लेख किया गया है vi(संपादक) ...
इज़्ज़ी

10

आप एस्सिनेमा को आज़माना चाह सकते हैं । सिर्फ एक रिकॉर्डिंग बनाने के अलावा, आपको इसे साझा करने और अपने ब्लॉग, लेख या किसी कॉन्फ़्रेंस वार्ता में खिलाड़ी को एम्बेड करने की क्षमता मिलती है।


6

मेरे पास हर शेल कमांड को लॉग करने के लिए syslog का उपयोग करने का एक बेहतर तरीका है, यह लिनक्स वितरण पर भिन्न हो सकता है लेकिन विधि समान रहेगी

आपको कुछ चरणों का पालन करने की आवश्यकता है:

चरण # 1 (Syslog सेवा बनाएं)

# vim /etc/rsyslog.d/bash.conf

local6.*    /var/log/commands.log

चरण # 2 (खुले bashrc और कमांड के नीचे दर्ज करें)

# vim /root/.bashrc

# Enable CLI Logging by Mansur 08-12-2016 
whoami="$(whoami)@$(echo $SSH_CONNECTION | awk '{print $1}')"export PROMPT_COMMAND='RETRN_VAL=$?;logger -p local6.debug "$whoami [$$]: $(history 1 | sed "s/^[ ]*[0-9]\+[ ]*//" ) [$RETRN_VAL]"'

Ste # 3 (पुनः आरंभ करें Syslog सेवा)

# /etc/init.d/rsyslog

यहाँ एक लॉग नमूना है:

7 दिसंबर 22:13:00 सत्यापन 2 महासन: रूट @ निर्यात [13291]: पूंछ -f /var/log/mysql/mysql.log [0]
7 दिसंबर 22:13:09 सत्यापन 2 महासन: रूट @ निर्यात [13291]: ls -लह [0]
7 दिसंबर 22:13:27 सत्यापन 2 महासन: रूट @ निर्यात [13291]: स्पर्श परीक्षण कमान [0]

चुटीली युक्ति !!!
टॉम एच

हाय मंसूर, क्या आप यह समझा सकते हैं कि आप उन आदेशों के साथ क्या कर रहे हैं, यह समझना मुश्किल है, मेरे लिए कम से कम।
जस्सर

चरण 1 में मैं कमांड लॉगिंग के लिए एक सेवा का नामकरण कर रहा हूं जिसका उपयोग प्रक्रिया को लॉग को भेजने के लिए किया जाएगा "लोकल 6" लॉगिंग के लिए सेवा का अंतिम बिंदु होगा चरण 2 में मैं उन चीजों को सेट कर रहा हूं जो मैं वास्तव में चाहता हूं "PROMPT_COMMIN = 'RETRN_VAL = $? " यह भाग उपयोगकर्ता के इनपुट और "लकड़हारे -p local6.debug" को रिकॉर्ड करेगा, यह लॉग फाइल को सेवा में भेज देगा जो रिकॉर्ड लॉग डेटा की मदद से मदद करता है
मंसूर अली
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.