2012-12-18 14 views
5

में हूं, मैं अपनी व्यक्तिगत लॉगफाइल बनाना चाहता हूं जो न केवल लॉग इन और आउट होने पर लॉग इन करता है, बल्कि जब भी मैं अपनी स्क्रीन को लॉक/अनलॉक करता हूं। स्टेरॉयड पर/var/log/wtmp की तरह।बैश में, मैं कैसे बता सकता हूं कि मैं वर्तमान में टर्मिनल

ऐसा करने के लिए, मैंने एक स्क्रिप्ट चलाने का फैसला किया जब मैं उबंटू में लॉग इन करता हूं जो तब तक पृष्ठभूमि में चलता है जब तक मैं बाहर नहीं जाता। ऐसा करने की मेरी योजना ./startlogging.sh & का उपयोग करके स्क्रिप्ट को .bashrc पर जोड़ना है और स्क्रिप्ट में मैं संकेतों को पकड़ने के लिए trap का उपयोग करूंगा। यह बढ़िया है, .bashrc को छोड़कर हर बार जब मैं एक नया टर्मिनल खोलता हूं, जो कि मैं लॉगर के लिए नहीं चाहता हूं।

क्या बैश में बताने का कोई तरीका है कि वर्तमान लॉगिन एक gnome लॉगिन है? वैकल्पिक रूप से, क्या .gnomerc का कोई प्रकार है जिसका उपयोग मैं अपनी स्क्रिप्ट चलाने के लिए कर सकता हूं?

संपादित करें:, स्क्रिप्ट निकाला गया के बाद से यह प्रश्न से संबंधित नहीं है:

संपादित करें 2: यहाँ मेरी स्क्रिप्ट है। मैं इस मुद्दे को दोबारा बदलने के बजाए अपने दूसरे प्रश्न को दोबारा दोहरा दूंगा।

उत्तर

4

क्या आप यह जानने का तरीका ढूंढ रहे हैं कि यह किस प्रकार का टर्मिनल है?

प्रयास करें:

echo $TERM 

Wikipedia से:

अवधि (यूनिक्स की तरह) - कंप्यूटर टर्मिनल या टर्मिनल एमुलेटर इस्तेमाल किया जा रहा है (जैसे, vt100 या गूंगा) के प्रकार निर्दिष्ट करता है।

यह भी देखें: List of Terminal Emulators

+0

क्या आप जानते हैं कि '$ TERM' कब होगा जब मैं पहली बार gnome में लॉग इन करता हूं? –

+0

@RobertMartin यह gnome के लिए 'gnome-टर्मिनल' होना चाहिए। –

+0

संपादित करें: आपका उत्तर मेरे प्रश्न का उत्तर है। धन्यवाद। –

0

बैश उपयोग के लिए: ~/.bash_logout

कि निष्पादित हो जाएगा जब आप लॉग आउट करें, जो आपको बस इतना करना कोशिश कर रहे हैं जैसा लगता है।

+0

वास्तव में पर्याप्त नहीं है। मैं चाहता हूं कि मेरी स्क्रिप्ट एक डिमन की तरह चलें, लॉग इन करते समय लॉग इन करें, स्क्रीन लॉक/अनलॉक करें, और लॉग आउट करें। प्रश्न में लिपि देखें। –

0

ठीक है, बस बैश के लिए, यदि आप चाहते क्या हैं .bash_login अपने घर निर्देशिका में/.bash_logout (बजाय .bashrc) ये चलाए जा रहे हैं, जब भी एक लॉगिन खोल शुरू होता है/खत्म है, जो एक पर किसी भी समय आप एक खोल में लॉग इन (होता है tty या कंसोल, या एसएसएच या अन्य नेटवर्क लॉगिन के माध्यम से)। ये आपके द्वारा बनाई गई टर्मिनल विंडो में चलाने के लिए बनाए गए बैश प्रक्रियाओं के लिए नहीं चल रहे हैं (क्योंकि वे लॉगिन शेल नहीं हैं) इसलिए जब भी आप कोई नया टर्मिनल खोलेंगे तो रन नहीं मिलेगा।

समस्या यह है कि यदि आप कुछ तंत्र के साथ लॉग इन करते हैं जिसमें टर्मिनल शामिल नहीं है (जैसे कि जीनोम कंसोल पर चल रहा है तो gnome या kde या unity सत्र शुरू करने के लिए), तो कोई लॉगिन खोल नहीं है। Bash_login/logout कभी भाग नहीं मिलता उस स्थिति के लिए, संभवतः आपके .xsessionrc में कुछ डालना संभव है, जो हर बार जब आप एक्स सत्र शुरू करते हैं (जो कि उन जीयूआई वातावरणों में से किसी के लिए होता है, चाहे आप जो भी चलाते हैं)। दुर्भाग्यवश, कोई मानक स्क्रिप्ट नहीं है जो एक्स सत्र समाप्त होने पर चलता है।

+0

यह आशाजनक लगता है। अगर मैं अपनी स्क्रिप्ट को '.xsessionrc' में डालता हूं और पृष्ठभूमि का उपयोग करता हूं, तो क्या यह तुरंत समाप्त हो जाएगा? क्या यह एक डिमन बन जाएगा? जब मैं लॉगआउट करता हूं (एक SIGHUP प्राप्त करता हूं) मैं इसे छोड़ना चाहता हूं। जैसा कि आप स्क्रिप्ट से देख सकते हैं, यह एक डिमन के रूप में चलाना चाहता है। –

संबंधित मुद्दे

 संबंधित मुद्दे