আমি কীভাবে ইউনিটি লগইন / লগআউটে স্ক্রিপ্ট চালাব?


8

আমার দুটি স্ক্রিপ্ট রয়েছে - একটি এসএসএইচএফএসের উপর কয়েকটি ফোল্ডার মাউন্ট করার জন্য - এবং একটি আনমাউন্ট করার জন্য।

আমার ডিফল্ট উবুন্টু ডেস্কটপ চালু হওয়ার পরে আমি মাউন্ট স্ক্রিপ্টটি চালু করতে চাই (গ্রাফিকাল কনসোলে লগইন করার পরে) - এবং অন-মাউন্ট স্ক্রিপ্ট যখন আমি ডানদিকের ডানদিকে কগ-চাকা থেকে "লগ আউট ..." করব ডেস্কটপ।

দয়া করে কেউ কি আমাকে বলতে পারেন কীভাবে এটি অর্জন করা যায়? ডেস্কটপ লঞ্চ / প্রস্থান করতে কমান্ড চালানোর জন্য সবচেয়ে সুবিধাজনক / মানক হুকগুলি কী কী?


সময়টি সমালোচিত হওয়ার আশা করি না। যে বিষয়টি গুরুত্বপূর্ণ তা হ'ল প্রথম স্ক্রিপ্টটি দ্বিতীয় বা তার মধ্যে সম্পাদিত হয় ... ব্যবহারকারী ইন্টারেক্টিভভাবে অ্যাপ্লিকেশনগুলি চালু করার আগে। লগআউটে, এটি কেবল গুরুত্বপূর্ণ যে অন্য কোনও কনসোলে লগ ইন করার আগে দ্বিতীয় স্ক্রিপ্টটি কার্যকর করা হয়।
এস্টিভ

আমার রুট অ্যাক্সেস আছে। প্যাকেজ ইনস্টল করার কোনও সমস্যা নেই। যদি সম্ভব হয় তবে আমি কেবল ব্যবহারকারীর স্তরের সুবিধাদি ব্যবহার করতে চাই - ধরে নিই যে এটি করার একটি সুস্পষ্ট উপায় রয়েছে। আমার স্ক্রিপ্টগুলির মূল প্রয়োজন হয় না। আমি কীভাবে আমার scক্য স্টার্ট / স্টপ সম্পর্কে আমার স্ক্রিপ্টগুলি সেরাভাবে শুরু করতে পারি সে সম্পর্কে পরামর্শের সন্ধান করছি ... আমার বেশিরভাগ লিনাক্স / ইউনিক্সের অভিজ্ঞতা নন-জিইউআই প্রসঙ্গে রয়েছে। পুরানো-স্কুল এক্স উইন্ডো এবং একটি ভ্যানিলা উইন্ডো ম্যানেজারের সাথে, আমি .xinitrc থেকে এটি করতে পারতাম। আধুনিক, ডিফল্ট, ইউনিটি ডেস্কটপের সাথে সর্বোত্তম উপায় কী?
এস্টিভ

লগ-অফ ক্রিয়াটি যা মাউন্ট করা হচ্ছে না / তার উপর নির্ভর করতে চাই না ... এটি বিদ্যমান স্ক্রিপ্টগুলির দ্বারা গতিশীলভাবে পরিচালনা করা হয়। আমার যা প্রয়োজন তা হ'ল লগ-অনের প্রথম স্ক্রিপ্টটি চালিত করার জন্য দ্বিতীয় এবং কনসোলের জিইউআই সেশনের জন্য দ্বিতীয় লগ-অফ করা। আমি "স্টার্টআপ অ্যাপ্লিকেশন" খুঁজে পেয়েছি - তবে এটি সমস্যার প্রথমার্ধটিই সমাধান করবে।
এস্টিভ

আমি মনে করি না যে "লগইন অ্যাপ্লিকেশনগুলি" উভয়ই স্ক্রিপ্টের জন্য সঠিক কৌশল। আমার দুটি স্ক্রিপ্ট আছে ... একটি আমার জিইউআই সেশনের জন্য জিনিসগুলি সেট আপ করে; অন্য একটি জিইউআই অধিবেশন পরে পরিষ্কার করা হয়। উভয়ই জিইউআই অধিবেশন হিসাবে একই ব্যবহারকারী হিসাবে চালানো উচিত। উভয়ই কোন যুক্তি প্রয়োজন। স্ক্রিপ্টগুলি লঞ্চ করার জন্য আমার একটি উপযুক্ত উপায় খুঁজে বের করা দরকার - সঠিক সময়ে, এটাই। স্ক্রিপ্টগুলি আসলে কী করে সে সম্পর্কে কোনও অনুমানের প্রয়োজন হবে না। এই প্রশ্নটি Unক্য লগ-অন এবং লগ-অফের সাথে মিল রেখে ইভেন্টগুলি কীভাবে হুক করা যায় সে সম্পর্কে about
এস্টিভ

উত্তর:


9

আপনি যখন ইউনিটিতে লগইন করেন এবং অন্য লগইনের জন্য না হয়ে চাকরি চালানোর প্রয়োজনীয়তার কথা বিবেচনা করেন, একটি আপস্টার্ট সেশনের কাজটি নিখুঁত বলে মনে হয়।

আপনি এটি লক্ষ্য করে থাকতে পারেন: জিইউআই লগইন করার পরে আপনি যে প্রক্রিয়াগুলি চালিত করেন সেগুলি দ্বিতীয় initপ্রক্রিয়াধীন। এটি initএকটি যথাযথ উপসাগরীয় উদ্যোগ, এবং আপনি এর দ্বারা নির্গত ইভেন্টগুলির উপর ভিত্তি করে সেশন জব শুরু এবং বন্ধ করতে পারেন। কোনও রুট সুবিধার দরকার নেই। আরও ভাল (বা দৃষ্টিভঙ্গির উপর নির্ভর করে আরও খারাপ), এটি এখনও মাথাবিহীন সিস্টেমগুলির জন্য পুরোপুরি সমর্থিত নয়। একটি এসএসএইচ লগইন আমি এখনই তৈরি করা দ্রুত পরীক্ষার থেকে ব্যবহারকারী আরম্ভ শুরু করিনি।

একটি সেশন জব তৈরি করতে, একটি নতুন .confফাইল তৈরি করুন ~/.config/upstart। এটি আপস্টার্ট সেশন জবসের জন্য ডিফল্ট প্রাথমিক ডিরেক্টরি ( $XDG_CONFIG_HOME/upstart), উপস্থিত না থাকলে এটি তৈরি করুন। এখানে একটি উদাহরণ কাজ:

tee ~/.config/upstart/myjob.conf <<EOF
description "My job"
start on desktop-start
stop on desktop-end

script 
       firefox 'http://upstart.ubuntu.com/cookbook/#session-job'
end script
EOF

আপনি নিজে এটি নিয়ন্ত্রণ করতে পারেন:

start myjob 
# or
initctl start myjob

serviceকমান্ড সিস্টেম কাজ (ঐ নিয়ন্ত্রণ করতে ব্যবহার করা হয় /etc/init.dবা /etc/init)। সেশন জবগুলি নিয়ন্ত্রণের জন্য, initctlকমান্ডটি ব্যবহার করা দরকার যা আপস্টার্টের সাথে ইন্টারেক্ট করার জন্য ব্যবহৃত হয়।

আপনি man upstart-eventsব্যবহার করতে পারেন আরও ইভেন্টের জন্য দেখুন।


আমি খেয়াল করিনি ... তবে ... আমি সম্মত হই - একটি আপস্টার্ট সেশনের কাজ নিখুঁত দেখাচ্ছে। আমি সম্ভবত স্পষ্ট কিছু মিস করছি ... তবে "সার্ভিস মাইজব স্টার্ট" যখন আমি "মাইজব পাই: অপরিজ্ঞাত পরিষেবা" পেয়েছি তখন ~ / .config / upstart / myjob.conf (উপরে হিসাবে) তৈরি করেছি কোনও ধারণা?
এস্টিভ

এর সমাধান: আমার "পরিষেবা মাইজব স্টার্ট" পরিবর্তে "স্টার্ট মাইজব" ব্যবহার করা দরকার। আরেকটি দরকারী কমান্ডটি ছিল "initctl তালিকা"
এস্টিভ

@ এস্টেভ সম্পর্কে দুঃখিত আমি এটা সংশোধন,
muru

সমস্যা নেই. আপস্টার্ট / সেশনগুলির পদ্ধতির অবশ্যই স্পষ্টভাবে সঠিক দেখাচ্ছে। এটি বলেছিল, আমি পৃথক (স্বল্পজীবী) শুরু করতে এবং স্ক্রিপ্টগুলি বন্ধ করতে এটি ব্যবহার করার সর্বোত্তম উপায়টি এখনও শনাক্ত করতে পারি নি। আমি কি মাত্র 1 .conf ফাইল ব্যবহার করতে পারি, বা আমার 2 টি দরকার? এটি একটি "পরিষেবা" বা "টাস্ক" হওয়া উচিত? আমার কি প্রাক / পোস্ট শুরু এবং প্রাক / পোস্ট স্টপ ব্যবহার করা উচিত? শুরু এবং থামার মধ্যে কোনও প্রক্রিয়া চালানোর দরকার নেই / চাই না ... যতক্ষণ না আমার ধারণা, সরঞ্জামদণ্ডে একটি আইকন রাখার সহজ উপায় আছে ... যদিও এটি সম্ভবত, ওভারকিল - আমার উদ্দেশ্যে।
স্টিভ

1
অবশেষে। অনেক হ্যাকিংয়ের পরে ... আমি আবিষ্কার করেছি যে আমার মেনডটাস্কটি "সেশন-এন্ডে" বরখাস্ত করা দরকার, "ডেস্কটপ-এন্ডে" নয়। এটি কিছুটা স্ব-স্বজ্ঞাত, তবে এটি কার্যকর। (শেষ
অবধি

1

সমাধানটি ছিল আপস্টার্ট কাজগুলি ব্যবহার করা। আমার দুটি কাজ দরকার - একটি ব্যবহারকারীর জন্য ডেস্কটপ আরম্ভ করার সময় একটি বরখাস্ত; দ্বিতীয়টি যখন ব্যবহারকারীদের সেশনটির মেয়াদ শেষ হয়। নিম্নলিখিত দুটি স্ক্রিপ্ট আমার জন্য উবুন্টু 14.04 এর অধীনে কাজ করে।

~ / .Config / upstart / ডেস্কটপ ওপেনকনফ এ

description "Desktop Open Task"
start on desktop-start
task
script
# Commands to mount sshfs go here as shell-script.
end script

~ / .Config / upstart / ডেস্কটপক্লোজকনফ এ

description "Desktop Close Task"
start on session-end
task
script
# Commands to unmount sshfs go here as shell-script.
end script

আমার আঙ্গুলগুলি পার হয়ে গেছে যে এই ইভেন্টগুলি ভবিষ্যতে উবুন্টু রিলিজে প্রয়োজনীয়তা মেটাতে থাকবে। আমি আমার সমাধানটি এখানে পোস্ট করার উপযুক্ত বলে মনে করেছি - যদি এটি অন্যের কাজে আসে।


-1

লগইন করার পরে স্ক্রিপ্ট চালানোর জন্য এখানে কিছু পরামর্শ দেওয়া হল:

বুটআপের পরে স্ট্যাকওভারফ্লো লিনাক্স স্ক্রিপ্ট : ক্লিফ নোটগুলি আপনার * .sh ফাইলটিকে /etc/profile.d- এ রাখতে হবে।

আপনি যদি বুটআপের উপর স্ক্রিপ্টগুলি চালাতে চান তবে তার জন্য এখানে কিছু পরামর্শ দেওয়া হল:

বুটের পরে স্ট্যাকওভারফ্লো লিনাক্স স্ক্রিপ্ট : ক্লিফ নোটগুলি /etc/rc.local বা crontab ব্যবহার করতে হয়।


1
এই বিকল্পগুলির কোনওটিই 'ডান' দেখাচ্ছে না। আমি কেবল তখনই স্ক্রিপ্টটি সম্পাদন করতে চাই যখন আমি unityক্যের অধিবেশন শুরু / শেষ করার অনুভূতিতে লগ-অন / অফ করি। আমি প্রতিবার নতুন লগ-ইন করার সময় আমার স্ক্রিপ্টগুলি চালাতে চাই না। নতুন লগ-অনগুলি এসএসএস ইত্যাদির মাধ্যমে দূরবর্তীভাবে শুরু করা যেতে পারে - তবে আমি চাই না যে এগুলি স্ক্রিপ্টটি কার্যকর করুক কারণ তারা নতুন ইউনিটির অধিবেশন (কনসোলে) শুরু না করে।
স্টিভ
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.