उपयोगकर्ता लॉगऑन पर एक कमांड निष्पादित करें


23

लिनक्स डेस्कटॉप सिस्टम में, मैं एक कमांड निष्पादित करना चाहता हूं जब उपयोगकर्ता लॉग इन करता है।

कुछ अन्य पोस्ट पढ़ने के बाद, मैंने कमांड डालने की कोशिश की ~/.bashrcलेकिन असफल रहा। इसके अलावा, सिस्टम उपयोगकर्ता लॉगिन के लिए एक ग्राफिक इंटरफ़ेस का उपयोग करता है, इसलिए कमांड शेल की शुरुआत से संबंधित नहीं होना चाहिए।

मैंने /etc/profile.dबिना किसी नतीजे के किसी भी स्क्रिप्ट में कमांड को जोड़ने की कोशिश की ।

क्या इसे करने का और कोई तरीका है? कोई भी फाइल जो सिस्टम लॉगिन के बाद पढ़ता है?


जवाबों:


21

इस बात की कोई गारंटी नहीं है कि ग्राफिकल डिस्प्ले मैनेजर क्लासिक स्टार्टअप फाइलों को पढ़ेगा। यह वितरण और प्रदर्शन प्रबंधकों के बीच बदलता है। हालांकि निम्नलिखित में से एक काम करना चाहिए।

  1. स्टार्टअप अनुप्रयोगों को सेट करने के लिए अपने डेस्कटॉप वातावरण की मूल विधि का उपयोग करें। आपके द्वारा उपयोग किए जा रहे डीए पर विवरण निर्भर करेगा, लेकिन आप एक स्क्रिप्ट बना सकते हैं जो आपकी कमांड चलाती है और इसे स्टार्टअप एप्लिकेशन की सूची में जोड़ सकती है। उदाहरण के लिए, मेरे सिस्टम (दालचीनी) पर, आप इसे "सिस्टम सेटिंग्स" => "स्टार्टअप एप्लिकेशन" के माध्यम से कर सकते हैं।

  2. का उपयोग करें ~/.xprofile, यह कम से कम GDM, LDM, LightDM और LXDM लॉगिन प्रबंधकों द्वारा sourced है।

  3. यदि उपरोक्त में से कोई भी कार्य नहीं है, तो कमांड जोड़ने का प्रयास करें ~/.profile: यह लॉगिन गोले के लिए मुख्य आरंभीकरण फ़ाइल है और लॉगिन पर कुछ ग्राफिकल गोले द्वारा भी पढ़ा जाता है।

  4. जैसा कि @derobert ने टिप्पणी में बताया है, आप भी मुफ्त डेस्कटॉप मानकों का उपयोग कर सकते हैं :

    ऑटोस्टार्ट निर्देशिकाएँ $ XDG_CONFIG_DIRS / ऑटोस्टार्ट हैं जैसा कि "डेस्कटॉप बेस डायरेक्टरी स्पेसिफिकेशन" में "इस विनिर्देश को संदर्भित करना" खंड के अनुसार परिभाषित किया गया है।

    यदि एक ही फ़ाइल नाम कई ऑटोस्टार्ट निर्देशिकाओं के अंतर्गत स्थित है, तो सबसे महत्वपूर्ण निर्देशिका के तहत फ़ाइल का उपयोग किया जाना चाहिए।

    उदाहरण: यदि $ XDG_CONFIG_HOME उपयोगकर्ता के घर में ऑटोस्टार्ट निर्देशिका सेट नहीं है, तो ~ / .config / autostart / है।

    उदाहरण: यदि $ XDG_CONFIG_DIRS सिस्टम विस्तृत सेट नहीं है, तो Autostart निर्देशिका / etc / xdg / autostart / है

    उदाहरण: यदि $ XDG_CONFIG_HOME और $ XDG_CONFIG_DIRS सेट नहीं हैं और दो फाइलें /etc/xdg/autostart/foo.desktop और ~ / .config / autostart / foo.desktop मौजूद हैं, तो केवल फाइल ~ / .config / autostig / autostart / autostart / autostart / autostart / autostart / autostart / autostart / autotart के साथ उपलब्ध हैं। डेस्कटॉप का उपयोग किया जाएगा क्योंकि ~ / .config / autostart / / / xdg / autostart / से अधिक महत्वपूर्ण है /

~/.bashrcयहाँ पूरी तरह से अप्रासंगिक है, यह केवल इंटरैक्टिव गैर लॉगिन गोले द्वारा पढ़ा जाता है, तो लॉगिन गोले पर ध्यान नहीं दिया जाता, चित्रमय या नहीं।


5
उल्लेख करने के लिए चाहते हो सकता है ~/.config/autostartऔर /etc/xdg/autostart/के अनुसार मानक ऐसे स्थान होते हैं, जो डेस्कटॉप एप्लिकेशन Autostart विशिष्टता । और भी /etc/X11/Xsession.dऔर ~/.xsession
derobert

6

एक अन्य विकल्प पाम का उपयोग करना है - यह आपको लॉगिन कार्यों को परिभाषित करने का एक सटीक तरीका देगा।

एक सामान्य क्रिया के लिए आप pam_exec ( http://manpages.ubuntu.com/manpages/hardy/man8/pam_exec.8.html ) पर भरोसा कर सकते हैं । हालाँकि, यदि आपको सुरक्षित तरीके से अधिक विशिष्ट कार्रवाई करने की आवश्यकता है, तो अधिक विशिष्ट pam मॉड्यूल मौजूद हो सकते हैं जो कि एक बेहतर फिट बनाएंगे, जैसे कि आमतौर पर इस्तेमाल किए जाने वाले pam_mount (ऑन-लॉगिन लॉगिन के लिए - http: //manpages.ubuntu। com / manpages / hardy / man8 / pam_mount.8.html ) या pam_echo (उपयोगकर्ताओं के लिए मनमाने संदेशों के लिए - http://manpages.ubuntu.com/manpages/hardy/man8/pam_echO.8.html )।

सामान्य तौर पर, लॉगिन को कस्टमाइज़ करने के लिए pam एक बहुत ही साफ-सुथरी प्रणाली है, इसलिए आप संभावित असुरक्षित स्क्रिप्टिंग पर भरोसा करने के बजाय, इसमें कुछ और देखना चाहते हैं, जैसा कि अन्य लोगों ने सुझाव दिया था।

उदाहरण

काफी विशिष्ट /etc/pam.d/system-auth को देखते हुए हम इस तरह लॉगिन करने के बाद pam_exec को नियोजित कर सकते हैं:

session         optional        pam_ssh.so
session         required        pam_limits.so
session         required        pam_env.so
session         optional        pam_mktemp.so
session         required        pam_unix.so
session         optional        pam_exec.so /usr/local/bin/my_prog
session         optional        pam_permit.so

जहां /usr/local/bin/my_progसफल उपयोगकर्ता लॉगिन के बाद मनमाना कार्यक्रम चलाया जा रहा है।


2
यह एक अच्छा उत्तर है, हालांकि आपको उस पंक्ति का एक उदाहरण शामिल करना चाहिए जिसे आप pamकॉन्फ़िगरेशन जोड़ सकते हैं क्योंकि यह गैर-तुच्छ है।
ग्रीम

2

इस विषय के अनुसार: लॉगिन के बाद स्वचालित रूप से रन कमांड?

आपके पास .bashrc(न कि आपको क्या जरूरत है) का समाधान और स्टार्टअप अनुप्रयोगों का समाधान है। मैं डैनियल एस बोली:

gnome-session-properties स्टार्टअप अनुप्रयोगों को कॉन्फ़िगर करने के लिए इस्तेमाल किया जा सकता है।

इसके अलावा, यदि आप सिस्टम बूट में एक एप्लिकेशन चलाना चाहते हैं, तो आप अपने क्रॉस्टैब के साथ एक नियम जोड़ सकते हैं (एडिट क्रेस्टैब को एडिट करें crontab -e):

@reboot /run/this/program/at/boot >/dev/null 2>&1
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.