বর্তমান ব্যবহারকারীকে লগ আউট করতে ম্যাক ওএস এক্স টার্মিনাল কমান্ড কী?


19

আমি "ঘুম 3600; লগআউট" এর মতো কিছু চালাতে চাই, তবে লগআউট বাশ কমান্ড কেবলমাত্র বর্তমান টার্মিনালটি বন্ধ করে দেয়। আমি কীভাবে পুরো ম্যাক ওএস এক্স সেশনটি বন্ধ করব?

উত্তর:


22

নিম্নলিখিত অ্যাপসক্রিপ্ট বর্তমান ব্যবহারকারী লগআউট করবে:

tell application "System Events" to log out

osascriptকমান্ডটি ব্যবহার করে আপনি এটি একটি ব্যাশ ওরফে মুড়িয়ে রাখতে পারেন :

alias maclogout="osascript -e 'tell application \"System Events\" to log out'"

এটি "Log> লগ আউট [ব্যবহারকারীর নাম] ..." ক্লিক করার মতো এবং এটি 2 মিনিটের অপেক্ষার পরে লগআউট হবে

এটি sleepকমান্ডের সাথে সহজেই মিলিত হয় :

alias delayedlogout="sleep 3600; maclogout"

.. অথবা একটি একক ওরফে একত্রিত হতে পারে:

alias delayedlogout="sleep 3600; osascript -e 'tell application \"System Events\" to log out'"

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

স্লিপ কমান্ড সম্পর্কে টুইট "সিস্টেম ইভেন্টস" অংশে পালানো উক্তিটি প্রয়োজনীয়, কারণalias maclogout="..."
dbr

2
আমি সম্প্রতি আবিষ্কার করেছি যে টার্মিনালে কমান্ড চালানো টার্মিনালটির ফলে সিস্টেমটি বন্ধ হয়ে / বন্ধ হবে না কারণ বাশ বর্তমান প্রক্রিয়া না হওয়ার কারণে লগআউটটি আটকায়। এটি সহজেই '(ঘুম 1; কমান্ড) ও' ঠিক করে ফিক্স করা যেতে পারে, যেখানে ঘুম ব্যাকগ্রাউন্ডে কাজের সারিবদ্ধ করে এবং টার্মিনালটি কার্যকর করার সময় এটি ব্যস্ত বলে মনে করে না is
গ্রজেগোর্জ অ্যাডাম হানকিউইক্জ

17

ওএস এক্স-এ টার্মিনাল থেকে বর্তমান ব্যবহারকারীর লগ আউট করার কোনও "দুর্দান্ত" উপায় নেই it এটি করার 'অগোছালো' উপায়টি হ'ল ব্যবহারকারীর loginwindowপ্রক্রিয়াটিকে হত্যা করা । এটি আপনার ব্যবহারকারীর নাম অনুসারে চলমান সমস্ত প্রক্রিয়া (প্রোগ্রামগুলি) অভদ্রভাবে হত্যা করবে।

এটি করা একটি দুই-পদক্ষেপ প্রক্রিয়া।

  1. টার্মিনালে, এটি চালান:

    ps -Ajc | grep loginwindow
    
  2. তারপর, চালান

    sudo kill <pid>
    

    <pid>উপরের কমান্ড থেকে আউটপুট থেকে প্রথম সংখ্যা (দ্বিতীয় কলাম) কোথায় ।

এই কাজটি করার জন্য আমাকে যে প্রক্রিয়াটি করতে হয়েছিল তা জোর করার জন্য sudo কিল -9 ব্যবহার করুন।

সুতরাং উদাহরণস্বরূপ, যখন প্রথম কমান্ডের আউটপুট হয়:

joshhunt    41     1    41 5e15c08    0 Ss     ??    3:13.09 loginwindow

তারপরে আমি দৌড়ে যেতাম sudo kill 41, আমার পাসওয়ার্ডটি প্রবেশ করান এবং তারপরে আমি লগ আউট হয়ে যাই।

এটি বাশ ওরফে একত্রিত করা যেতে পারে:

alias messylogout="ps -Ajc | grep loginwindow | grep -v grep | awk '{print \$2}' | sudo xargs kill"

আপনি কি শুধু ব্যবহার করতে পারবেন না sudo killall loginwindow? কমপক্ষে 10.7 এ loginwindowপ্রক্রিয়াটি তত্ক্ষণাত্ পুনরায় খোলা হবে বলে মনে হচ্ছে।
ল্রি

3

আমি জানি এটি একটি পুরানো প্রশ্ন তবে এটি আমাকে সাহায্য করেছে, ওএস এক্স ১০.৮-এ আমার যে কমান্ডটি প্রয়োজন তা হ'ল:

ps -Ajc | grep loginwindow | awk '{print $2}' | sudo xargs kill -9

awkবিবৃতি ভিন্ন এবং kill -9নিশ্চিত লগ-ইন প্রম্পট প্রদর্শিত হয়।


@ গ্রনোস্টাজ আপনি কি সত্যিই বিশ্বাস করেন যে এর মতো একটি সম্পাদনা গৃহীত হবে? আমি প্রস্তাবিত সম্পাদনাগুলিকে "অবৈধ সম্পাদনা (বিদ্যমান পোস্টে জবাব দেওয়ার বা মন্তব্য করার চেষ্টা)" বা "আমূল পরিবর্তন" হিসাবে সর্বদা প্রত্যাখ্যানিত দেখি - এবং মার্কেলের স্পষ্টতই মন্তব্য পোস্ট করার পর্যাপ্ত প্রতিনিধি নেই।
স্কট 21

@ স্কট আপনি ঠিক বলেছেন, আমি মন্তব্যটি পোস্ট করতে খুব দ্রুত ছিলাম।
গ্রোনস্টাজ

2

আমি মনে করি 2 মিনিটের অপেক্ষা না করে কীভাবে ম্যাক ওএস এক্সের গ্রেসফুলিভাবে লগআউট করব তার উত্তর আমি পেয়েছি ।

আমি শিখেছি শিফট, অপশন এবং কমান্ড ধরে রাখা এবং "কিউ" টিপুন কৌতুকপূর্ণভাবে লগ আউট করবে এবং "আপনি লগ আউট করতে চান কিনা" জিজ্ঞাসা করবেন না।

সুতরাং আমি অটোমেটরের মাধ্যমে একটি অ্যাপলস্ক্রিপ্ট কোড করেছিলাম:

tell application "System Events"
     keystroke "q" using {command down, shift down, option down}
end tell

0

আপনি যদি ম্যাকের গুইতে একই ব্যবহারকারী হিসাবে লগইন করে থাকেন তবে আপনি একটি সুডো-কম কমান্ড জারি করতে পারেন: launchctl reboot logoutযা ব্যবহারকারীকে বেশ কার্যকরভাবে লগআউট করে; এতে অ্যাপ্লিকেশনগুলিকে অনুমতি না দেওয়ার বিষয়ে সতর্কতা রয়েছে যা প্রস্থান করার সময় ইন্টারঅ্যাকশন করার অনুরোধ জানানো থেকে বিরত রয়েছে, তবে এটি বোঝা যাচ্ছে না যে এটি kill(সিগ টার্ম) বা kill -9(সিগ কিল) সম্ভবত একেবারে হত্যা করার মতো বিষয় ।


0

আমি যুক্তি দিয়ে বলব যে "সর্বোত্তম" উপায় ওএস এক্স 10.9 পোস্ট হতে পারে launchctl gui/$(id -u <username>) bootout

ওএস এক্স ১০.৯ পোস্টটি লঞ্চাক্টেলের জন্য ডকুমেন্টেশন চালিয়ে পাওয়া গেছে launchctl helpতবে মূলত উপরের কমান্ডটি ব্যবহারকারীর অস্থায়ী সেশনটি ছিন্ন করবে। বিকল্প launchctl user/$(id -u <username>) bootoutলঙ্ঘন স্থায়ী অধিবেশন যা ব্যবহারকারী ডেমনগুলি ব্যবহার করে যখন ব্যবহারকারী লগ ইন না করে।

এটি চালিয়ে পরীক্ষা করা যেতে পারে launchctl gui/$(id -u) bootout, এটি অবিলম্বে আপনাকে লগ আউট করবে এবং সিস্টেমটিকে লগইন উইন্ডোটি প্রদর্শন করবে (কিছুটা বিলম্বের সাথে)।


এল ক্যাপটেনের অধীনে অন্তত, সঠিক কমান্ড sudo launchctl bootout gui/XXXযেখানে XXXসংখ্যাসূচক ব্যবহারকারী আইডি (ইউআইডি) হয়। নোট করুন যে i) bootoutসাব কম্যান্ডটি প্রথম আসে এবং ii) $(id)ইউআইডি থেকে অনেক বেশি ফেরত দেয়।
ল্যারিক্স ডিজিডুয়া

আইডি (আইডি-ইউ) সঠিকভাবে কল করতে আপডেট হয়েছে
আইয়েন হেন্ডারসন

0

আপনার টার্মিনালে যুক্ত করার জন্য একটি দুর্দান্ত ইউটিলিটি হ'ল লগআউট কমান্ড, যেমনটি ব্যবহার করা যায়:

logout UserName

এখানে কীভাবে:

  1. আপনার .bash_ প্রোফাইলে সম্পাদনা করুন

    nano ~/.bash_profile

  2. এই লাইন যুক্ত করুন:

    logout() {sudo launchctl bootout user/$(id -u "$1")}

  3. ফাইল টিপুন সংরক্ষণ করুন ctrl+x

  4. টার্মিনালটি পুনরায় চালু করুন

আপনি যেতে প্রস্তুত;)

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.