কীভাবে ম্যাক ওএস এক্সে প্রক্রিয়াটি মেরে ফেলা যায় এবং এটি নিজে থেকে পুনরায় আরম্ভ করবেন না


29

আমি যখন sudo kill -9 [PID]যথাযথ প্রক্রিয়া আইডি দিয়ে চালিত করি তখন প্রক্রিয়াটি থেমে যায় তবে তারপরে পুনরায় আরম্ভ হয় এবং একটি নতুন পিআইডি থাকে। আমি mysqldপ্রক্রিয়াটি হত্যার চেষ্টা করছি ।

কোনও প্রক্রিয়া হত্যার ক্ষেত্রে আমি কীভাবে কার্যকলাপ পর্যবেক্ষণের অনুকরণ করতে পারি? ক্রিয়াকলাপ মনিটরে, আপনি "প্রস্থান প্রস্থান" টিপলে, প্রক্রিয়া স্থায়ীভাবে চলমান বন্ধ হয়ে যায়, এটি সম্পূর্ণভাবে সমাপ্ত হয়। আমি বুঝতে killপারি যে ঠিক একই জিনিসটি করবে?

কমান্ডটি কাজ করে কিনা তা দেখার জন্য আমার কাছে ক্রিয়াকলাপ মনিটর এবং টার্মিনাল উভয়ই ছিল, তবে আমি যতবার করি sudo kill -9 [PID]ততবার কার্যকলাপ মনিটরে প্রক্রিয়াটি সরে যায় না, এটি কেবল একটি নতুন পিআইডি দিয়ে সতেজ করে।

সুতরাং ... আমি কিভাবে mysqldটার্মিনাল মাধ্যমে প্রক্রিয়া হত্যা করব ?


আমি ক্রিয়াকলাপ মনিটর থেকে এটি করেছি কারণ 'কিল' কমান্ড পিআইডিকে স্বীকৃতি দিচ্ছিল না। আবার আপনার মামলার বিপরীতে আমার মাইএসকিএলএইটি ক্রিয়াকলাপের মনিটর থেকে খুন করার সাথে সাথে পুনরায় আরম্ভ হবে না।
ইউসুফ আবদুল্লা

সেকি! আপনার সত্যিই দরকার না হলে -9 ব্যবহার করবেন না। একটি প্রক্রিয়া করতে এটি হিংস্র জিনিস thing অন্যান্য সংকেতগুলি একটি প্রক্রিয়াটিকে সুশৃঙ্খলভাবে শেষ করার অনুমতি দেয় তবে -9 নয়! সুতরাং এর অর্থ হল যে র‌্যাম বাফারগুলি উদাহরণস্বরূপ ডিস্কে ফ্লাশ হয় না। এটি কাজ করার প্রক্রিয়াধীন একটি ডাটাবেসকে করা বিশেষত খারাপ কাজ; আপনি ক্ষতিগ্রস্থ টেবিলগুলিতে ফিরে আসবেন।
জান স্টেইনম্যান

উত্তর:


22

আপনি যে প্রক্রিয়াটিকে হত্যা করছেন সম্ভবত এটি চালু করেই পরিচালনা করা হচ্ছে , এটি বন্ধ করার এবং এটি পুনরায় আরম্ভ না করার উপযুক্ত উপায়টি হ'ল ব্যবহার করা launchctl unload <path to plist>। যে প্রক্রিয়াটি এই প্রক্রিয়াটিকে নিয়ন্ত্রণ করে সেটি হয় হয় /Library/LaunchDaemonsবা হয় /System/Library/LaunchDaemons। যদি এটি একটি সিস্টেম প্রক্রিয়া এবং আপনার নিজস্ব কোনও না হয়, তবে আপনাকে সম্ভবত পছন্দসইভাবে কাজ করতে ব্যবহার sudoকরতে হবে launchctl

একটি ভাল উপায় চেষ্টা করুন এবং এটি বন্ধ হতে পারে;

${MYSQL_HOME}/bin/mysqladmin -u root -proot shutdown > /dev/null 2>&1

আমি mysqldপ্রক্রিয়াটি হত্যার চেষ্টা করছি । আমি নিশ্চিত নই যে এটি লঞ্চডেমনসের অংশ কিনা ... তবে সার্ভারটি চালানো বন্ধ করার জন্য নিম্নলিখিত কমান্ডটি হ'ল সঠিক উপায় sudo /usr/local/mysql/support-files/mysql.server stopকিন্তু এতে আমার সমস্যা হচ্ছে, তাই আমি সরাসরি প্রক্রিয়াটি মারার চেষ্টা করছি।
হিস্টো

4
এটি পুনঃস্থাপনের পরে পুনরায় kill -9চালু করা হলেও পরোক্ষভাবে হলেও জড়িত থাকতে পারে। আপনি ব্যবহার করে বলতে পারেনlaunchctl list

তালিকার মধ্যে "মাইএসকিএল" নেই। আমি আপনার কমান্ড উপরে চেষ্টা করব।
হিস্টো

STDOUT এবং STDERR / dev / নাল এ পুনঃনির্দেশ করুন।
হ্যালো 71

7
আমার একই সমস্যা ছিল এবং এর মাধ্যমে লঞ্চ করা থেকে মাইএসকিএল সরিয়ে সমাধান করতে সক্ষম হয়েছিল sudo launchctl unload /Library/LaunchDaemons/com.oracle.oss.mysql.mysqld.plist
জেফ

11

বেশ কয়েকটি মন্তব্য উল্লেখ করেছে যে "চালু করা সম্ভবত জড়িত" - তাই আমি ভেবেছিলাম এটি একটি অতিরিক্ত উত্তর হিসাবে প্রকাশ করব। @ জারোদ-রবারসন যেমন বলেছে, লঞ্চ করা প্রথম চালনার সাথে জড়িত কিনা তা আপনি পরীক্ষা করতে পারেন launchctl list | grep mysqld

একটি গুরুত্বপূর্ণ বিষয় যা আপনি এখানে শিখছেন তা হ'ল মাইএসকিউএল হোমব্রিউয়ের সাথে ইনস্টল করা হয়েছিল কি না - ব্রু তার launchctlফাইলগুলি যেখানে ওএসএক্স "নিয়মিত" পরিষেবাগুলি রাখে তার চেয়ে আলাদা জায়গায় সংরক্ষণ করে।

আমার ওএসএক্স বাক্সে, plistফাইলগুলি এতে রয়েছে ~/Library/LaunchAgents/তাই আমি দৌড়েছি:

launchctl unload -w ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist

মাইএসকিউএল সার্ভার বন্ধ করতে। আমি পূর্বে তাকিয়ে ছিল /Library/LaunchDaemons/এবং /Library/LaunchAgentsকিন্তু সহ একটি ফাইল খুঁজে পাইনি mysqldতার নাম হবে।

এছাড়াও আপনি একটি চোলাই ভিত্তিক সিস্টেম বলা ইনস্টল করতে পারেন servicesসব Brew-ইনস্টল করা সেবা অ্যাপ্লিকেশন পরিচালনা করতে, এই পোস্টে বর্ণনা অনুযায়ী, - http://robots.thoughtbot.com/starting-and-stopping-background-services-with-homebrew আমি যদিও এটি নিজেই চেষ্টা করে দেখেনি, তাই ওয়াইএমএমভি।


2
এটিই আমার জন্য এটি স্থির করে দিয়েছে। আপনি যখন স্থানীয়ভাবে ল্যাম্প স্ট্যাক চালানোর জন্য একাধিক বিভিন্ন উপায়ে লড়াই করছেন তখন সর্বদা ব্যথা।
প্যাট্রিক

এটি মুছে ফেলার জন্য আমাকে হোমব্রিউয়ের পথটি ব্যবহার করতে হয়েছিল, যেমন/usr/local/opt/mysql/homebrew.mxcl.mysql.plist
মাইজ্যাম্পিং

10

আমি প্রক্রিয়াটিকে TERMসংকেত প্রেরণ করে হত্যা করার চেষ্টা করেছি এবং এটি কার্যকর হয়েছে। আদেশটি ছিল:

sudo kill -15 {PID}

8

আমার জন্য, আমি কোন লেবেলটি সন্ধান করছি তা একবার বের হয়ে এলে এটি কাজ করেছিল।

launchctl list | egrep {DESIRED_LABEL}   
launchctl remove {DESIRED_LABEL}

6

পরিষেবাটি আনলোড করুন এবং ডিমন বন্ধ করুন:

sudo launchctl unload -w /Library/LaunchDaemons/com.mysql.mysql.plist

পরিষেবাটি লোড করুন এবং ডেমনটি শুরু করুন:

sudo launchctl load -w /Library/LaunchDaemons/com.mysql.mysql.plist

com.oracle.oss.mysql.mysqld.plist আমার স্থানীয় মাইএসকিউএল মাইএসকিউএল থেকে ডাউনলোড থেকে ইনস্টল করা হয়েছিল, হোমব্রিউয়ের মাধ্যমে নয় এটি আমার পক্ষে কাজ করেছে ।
জেসন

2

আপনি কোন প্রক্রিয়া হত্যার চেষ্টা করছেন? ম্যাক ওএস এক্স-এর কিছু প্রক্রিয়া (যেমন, ডক, কিছু সিস্টেম প্রক্রিয়া) যদি তারা মারা যায় তবে স্বয়ংক্রিয়ভাবে রিসন।


আমি mysqldপ্রক্রিয়াটি মারার চেষ্টা করছি
হিস্টো

সম্ভবত launchdএটির দ্বারা পরিচালিত , যা প্রক্রিয়াটি মারা গেলে এটি পুনরায় চালু হবে।
মিপাদি

1

আমি / লাইব্রেরি / লঞ্চডেমোনস / কম.এম.এস.কি.এল.মাইসকিএল.পিলিস্ট ফাইল সম্পাদনা সমাধান করেছি, গুণকে সত্যে মিথ্যাতে পরিবর্তন করেছি

<!--?xml version="1.0" encoding="UTF-8"?-->
<plist version="1.0">
  <dict>
    <key>KeepAlive</key>
    <false />
    <key>Label</key>
    <string>com.mysql.mysqld</string>
    <key>ProgramArguments</key>
    <array>
      <string>/usr/local/mysql/bin/mysqld_safe</string>
      <string>--user=mysql</string>
    </array>
  </dict>
</plist>

0

আপনার মেশিনে একটি প্রক্রিয়া চলছে যা মাইএসকিএল ব্লক করছে। চালান

ps auxwww | grep mysql

তাহলে কর

kill -15 {PID}

আমার প্রক্রিয়া যা এটিকে বাধা দিচ্ছিল তা ছিল _ মাই এসকিএল

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