প্যাকম্যান আপগ্রেড করার পরে কি আমাকে পুনরায় চালু করা উচিত?


17

দৌড়ানোর পরে

sudo pacman -Syyu

অথবা

sudo pacman -S [something to install]

আমি কি নিরাপদ থাকার জন্য পুনরায় চালু করা উচিত?

উত্তর:


10

যদি কার্নেল, গ্লিবসি বা সিস্টেমে আপডেট থাকে তবে আপডেট সংস্করণগুলি ব্যবহারের কারণে আপনি পুনরায় আরম্ভ করতে চাইতে পারেন। যদি আপনার ডেস্কটপ পরিবেশে আপডেট থাকে তবে বলুন, একটি সহজ লগআউট / লগইন যথেষ্ট।


11

সর্বোত্তম উপায় হ'ল কোন প্রোগ্রাম / পরিষেবাগুলি পুরানো লাইব্রেরি ব্যবহার করে এবং সেগুলি পুনরায় চালু করে। এবং আপনি 'lsof' ব্যবহার করে সমস্ত ব্যবহৃত ফাইল তালিকাভুক্ত করে এবং 'ডেল' টাইপযুক্ত ফাইলগুলি আবিষ্কার করে এটি অর্জন করতে পারেন। দিল্ল মানে ফাইল সিস্টেম থেকে ফাইলের নামটি সরানো হয়েছে তবে এটি এখনও মেমরিতে আটকে আছে কারণ কেউ এটি ব্যবহার করে।

সম্পূর্ণ কমান্ড লাইন এখানে:

 sudo lsof +c 0 | grep 'DEL.*lib' | awk '1 { print $1 ": " $NF }' | sort -u

2
পরিষেবা এবং গ্রন্থাগারগুলির তালিকা তৈরি করার পরে, এখনও কোন সিস্টেমড পরিষেবাদি পুনরায় চালু করা দরকার তা পরিষ্কার নয়। সুতরাং, যদিও আমি জানি যে কোন প্রক্রিয়াগুলি এবং লিবগুলি পুনঃসূচনা দরকার, সাধারণত সেই পরিষেবাটির ভিত্তিতে কোন পরিষেবাগুলি পুনরায় চালু করা হবে তা নির্ধারণ করা অ-তুচ্ছ হয়।
bwv549

6

রিবুট করার একমাত্র বাধ্যতামূলক কারণটি হল একটি নতুন কার্নেল (এবং আপনি কেেক্সেক ব্যবহার করে নরম-রিবুট করতে পারেন)। সংক্ষেপে, বিশদগুলির জন্য https://wiki.archlinux.org/index.php/Kexec দেখুন :

  • নতুন কার্নেল, initramfs লোড করুন এবং বুট cmdline নির্দিষ্ট করুন

    kexec -l /boot/new-kernel --initrd=/boot/new-initramfs --reuse-cmdline
    
  • প্রার্থনা kexec( systemctlসঠিক শাটডাউন জন্য ব্যবহার , kexec -eসরাসরি চালানো হবে)

    systemctl kexec
    
  • মনে রাখবেন যে আপনি যদি kexec-load@.serviceউইকিতে বর্ণিত হিসাবে তৈরি করেন, যদি আপনি পুনরায় বুট করেন তবে একটি বায়োস রিবুট করার পরিবর্তে systemdস্বয়ংক্রিয়ভাবে নরম-রিবুট kexecহবে

সামান্য বিট উন্নত সংস্করণ যা সিস্টেমেড পরিষেবার নাম দেয়:

PIDS="(lsof +c0 -n 2> /dev/null | grep 'DEL.*lib' | awk '{print $2}' | sort -u)"
for PID in $PIDS; do
    systemctl status $i
done | grep '●' | awk '{print $2}' | sort -u

বা এক-লাইন:

for i in $(lsof +c0 -n 2> /dev/null | grep 'DEL.*lib' | awk '{print $2}' | sort -u); do systemctl status $i; done | grep '●' | awk '{print $2}' | sort -u

লক্ষ্য করুন যে কিছু সমস্যা রয়েছে:

  • systemctl daemon-reload অন্য কিছু শুরু করার আগে মৃত্যুদন্ড কার্যকর করা উচিত
  • যদি পিআইডি 1 ( systemdনিজেই) পুনরায় চালু করা দরকার হয় তবে এটি ব্যবহার করে করা যেতে পারেsystemctl daemon-reexec
  • systemctl restart dbus.service কিছু অন্যান্য পরিষেবা ভঙ্গ করে, তাদের ডিবিাস পুনরায় চালু করার পরে পুনরায় চালু করা দরকার:
    • systemd নিজেই: systemctl daemon-reexec
    • systemd-logind
    • systemd-machined
    • সম্ভবত অন্যান্য সিস্টেমড - * / অন্যান্য পরিষেবাদি যা (প্রচুর পরিমাণে) ব্যবহার করে dbus
  • আপনি যদি এসএসএইচ এর মাধ্যমে সংযুক্ত থাকেন এবং এসএসএইচ পুনরায় চালু করা দরকার, তবে systemctl restart sshdযতক্ষণ আপনি সংযুক্ত থাকবেন ততক্ষণ এটি পুনরায় আরম্ভ করবেন না, আমি 2 টি বিকল্প দেখতে পাচ্ছি:
    • টাইমার systemctl restart sshdব্যবহার করে সময়সূচীat/cron/systemd
    • SSHঅন্য রিমোট (সুরক্ষিত) শেল ব্যবহার করে পুনরায় চালু করুনmosh
  • চলমান পুনরায় চালু করা থেকে শুরু করে screen/tmuxপরিষেবাগুলিতেও অবরুদ্ধ হতে পারে SSH, সহজতম উপায় হ'ল পরিষেবাগুলি পুনরায় চালু করার আগে এই সেশনগুলি বন্ধ করা
  • আগের উত্তরে যেমন বলা হয়েছে, বিশেষত গ্রাফিকাল সেশনের জন্য লগআউট / লগইন প্রয়োজন হতে পারে

1
কীভাবে কেক্সেক ব্যবহার করা হয় তা ব্যাখ্যা করে উত্তরটির উন্নতি করতে আপনি আপত্তি করবেন?
রুই এফ রিবেইরো

0

একটি সহজ উপায় হ'ল চলমান কার্নেলের সংস্করণটিকে ডিস্কের সর্বশেষ কার্নেলের সাথে তুলনা করা। আমি এমন একটি স্ক্রিপ্ট পেয়েছি যা সহজেই তা করতে পারে।

যেহেতু আমার বেশ কয়েকটি কার্নেল ইনস্টল করা আছে, আমি চলমান কার্নেলের সাথে সম্পর্কিত একটিকে পরীক্ষা করতে স্ক্রিপ্টটি পরিবর্তন করেছি। উদাহরণস্বরূপ, বর্তমানে আমার কাছে 4.9.79 এবং 4.14.16 সংস্করণ ইনস্টল করা আছে এবং এইভাবে /boot/vmlinuz-4.14-x86_64 পরীক্ষা করা দরকার। দুর্ভাগ্যক্রমে এটি কাজ করবে না যখন আমি সংস্করণ 5.1 ব্যবহার করা শুরু করব, সুতরাং একটি আপডেটের প্রয়োজন হবে (4 দ্বারা 3 দ্বারা প্রতিস্থাপন করুন) অথবা আমার আরও শক্তিশালী উপায় খুঁজে বের করতে হবে।

আমার লিপিটি এখানে:

#!/bin/sh
NEXTLINE=0
FIND=""
CURRENT_KERNEL=`uname -r`
KERNEL_PATH="/boot/vmlinuz-${CURRENT_KERNEL:0:4}"
for I in `file $KERNEL_PATH*`; do
  if [ ${NEXTLINE} -eq 1 ]; then
    FIND="${I}"
    NEXTLINE=0
   else
    if [ "${I}" = "version" ]; then NEXTLINE=1; fi
  fi
done
    if [ ! "${FIND}" = "" ]; then
      if [ ! "${CURRENT_KERNEL}" = "${FIND}" ]; then
    echo "Boot required"
  else echo "No boot required"
  fi
fi
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.