systemctl সক্ষম systemctl শুরু থেকে পৃথক, কিভাবে?


16

আমি একটি আর্চ লিনাক্স (সর্বশেষ, আপ টু ডেট) বাক্সটি চালাচ্ছি এবং বুট থেকে মাইএসকিউএল পাওয়ার চেষ্টা করছি। সিস্টেমেড প্যাকেজ ইনস্টল করার সাথে সাথে আমার সিস্টেমেটেল উপলব্ধ রয়েছে এবং যেমন আমি এই জাতীয় জিনিসগুলি করতে পারি:

systemctl start mysqld.service
systemctl [stop|status|restart] mysqld.service

এগুলি সব ঠিক আছে, এবং আমি নিজে নিজে শুরু / থামাতে চাইলে দুর্দান্ত কাজ করে যাইহোক, এটি বুট-এ শুরু করার সময় আসে (সিস্টেমেটল-এ 'সক্ষম' ব্যবহার করে আমি কিছু বাজে আউটপুট পাই):

[root@rudivarch ~]# systemctl enable mysqld.service
Failed to issue method call: No such file or directory

স্পষ্টতই, যেহেতু অন্যান্য কমান্ডগুলি ঠিকঠাক কাজ করে, তাই আমি এ থেকে মারাত্মকভাবে বিভ্রান্ত হয়েছি এবং এটি বের করার চেষ্টা করার সময় আমি খুব ভাল ব্যয় করেছি ... সিস্টেমটেক্ট স্ট্যাটাস এটিকে আউটপুট করে:

[root@rudivarch ~]# systemctl status mysqld.service
mysqld.service
     Loaded: loaded (/etc/rc.d/mysqld)
     Active: inactive (dead) since Tue, 31 Jan 2012 15:32:28 +0000; 1min 25s ago
    Process: 589 ExecStop=/etc/rc.d/mysqld stop (code=exited, status=0/SUCCESS)
    Process: 257 ExecStart=/etc/rc.d/mysqld start (code=exited, status=0/SUCCESS)
    CGroup: name=systemd:/system/mysqld.service

কারও কোনও ধারণা আছে যে 'সক্ষম' কাজ করে না কেন?

উত্তর:


19

mysqld.serviceএটি একটি "ভার্চুয়াল" ইউনিট - এটি ফাইল সিস্টেমে বিদ্যমান নেই, এটি কেবল সিস্টেমডের সামঞ্জস্যতা স্তরটির অংশ। আপনি এটি শুরু করতে পারেন এবং সিস্টেমড উত্তরাধিকার সূক্ষ্ম /etc/rc.d/mysqldস্ক্রিপ্টটি চালাবেন , তবে আপনি systemctl enableএটি করতে পারবেন না কারণ আপনার আসল .serviceফাইল দরকার যা উপযুক্ত জায়গায় সিমলিংক করা যেতে পারে।

আপনি নিজে এই জাতীয় ইউনিটটি লিখতে এবং এটিতে রাখতে পারেন /etc/systemd/system/mysqld.service:

[ইউনিট]
বর্ণনা = মাইএসকিউএল সার্ভার
= Network.target পর

[পরিষেবা]
এক্সেকস্টার্ট = / usr / বিন / mysqld --dephaults-file = / ইত্যাদি / mysql / my.cnf --datadir = / var / lib / mysql --sket = / var / রান / mysqld / mysqld.sock
ব্যবহারকারী = MySQL
গ্রুপ = MySQL
WorkingDirectory =, / usr

[ইনস্টল করুন]
WantedBy = multi-user.target

systemctl daemon-reloadতৈরি / পরিবর্তন করার পরে চালান ।


বিকল্পভাবে, আপনি initscripts-systemdপ্যাকেজটি ইনস্টল করতে পারেন , যার মধ্যে arch-daemons.targetস্বয়ংক্রিয়ভাবে সংজ্ঞা দেওয়া পরিষেবাগুলি অন্তর্ভুক্ত রয়েছে rc.conf। যাইহোক, এই প্যাকেজটি শীঘ্রই চলে যেতে পারে, এবং init সিস্টেমের ব্যবহারের জন্য স্থানীয় কনফিগারেশন ফাইল রাখাই সর্বদা ভাল।


ধন্যবাদ! আমি আসলে আমার নিজস্ব mysqld.service লিখেছি যা গতকাল এর সাথে খুব সাদৃশ্যপূর্ণ, তবে /etc/rc.d/mysqld স্টার্ট / এক্সস্টার্ট / এক্সিকিস্টপ-এর জন্য স্টপ হয়ে যায়। স্বীকৃত, অন্য কেউ এটির ক্ষেত্রে আমার সংস্করণটি পোস্ট করবে! ধন্যবাদ
রুডি ভিজার

3

@ গ্রাভিটির উত্তর সঠিক এবং সম্ভবত এর চেয়ে ভাল, তবে আমি গতকালই এটি সমাধান করেছি মূলত আরসি.ডি স্ক্রিপ্টের মাধ্যমে ...

/lib/systemd/system/mysqld.service

[Unit]
Description=MySQL Server
After=network.target

[Service]
Type=forking
ExecStart=/etc/rc.d/mysqld start
ExecStop=/etc/rc.d/mysqld stop

[Install]
WantedBy=multi-user.target

2

নোট বেন: হোস্ট-নির্দিষ্ট ইউনিট ফাইলগুলি নীচে রাখার কথা মনে রাখবেন /etc/systemd/system/এবং না /lib/systemd/system/

পরেরটি ডিস্ট্রো-নির্দিষ্ট স্টাফগুলির জন্য; পূর্ববর্তীটি হোস্ট-নির্দিষ্ট স্টাফের জন্য যা আপনি নিজেরাই কনফিগার করেন। এটি যথাক্রমে /usr/bin/বনামের মতো /usr/local/bin/

তাই যদি না একটি প্যাকেজ নিজে ইউনিট ফাইল ইনস্টল করা (অধীনে /lib/systemd/system/), অধীনে আপনার নিজস্ব "কাস্টম" জিনিস করা /etc/systemd/system/


1
এটি সত্যই তার প্রশ্নের উত্তর দেয় না। এটি @ রুডির উত্তরের মন্তব্যটির মতো দেখতে আরও বেশি লাগে।
ফিলিটি

0

সক্ষম হ'ল "ইউনিট" ওরফে ডেমন ওরফে পরিষেবাটি শুরু করার সময় সক্রিয় করা systemd

openSUSE:

# systemctl list-units --all | grep sql
mysql.service             loaded inactive dead          LSB: Start the MySQL database 
(good)

# systemctl enable mysql.service
mysql.service is not a native service, redirecting to /sbin/chkconfig.
Executing /sbin/chkconfig mysql on
insserv: Service localfs has to exists for service vmware-USBArbitrator
insserv: Service network is missed in the runlevels 2 to use service vmware
Warning: unit files do not carry install information. No operation executed.

(it actually redirects to old chkconfig/sysvinit and that corrects init databases)

# systemctl start mysql.service

(no output)

# systemctl status mysql.service
mysql.service - LSB: Start the MySQL database server
          Loaded: loaded (/etc/init.d/mysql)
          Active: active (running) since Tue, 31 Jan 2012 20:07:52 +0100; 5s ago
         Process: 999999 ExecStart=/etc/init.d/mysql start (code=exited, status=0/SUCCESS)
          CGroup: name=systemd:/system/mysql.service
                  ├ 999999 /bin/sh /usr/bin/mysqld_safe --mysqld=mysqld --user=mysql...
                  └ 999999 /usr/sbin/mysqld --basedir=/usr --datadir=/var/lib/mysql...

(sort of runs)

হ্যাঁ আমি এটি বুঝতে পারি এবং মাইএসকিএলডি হ'ল ডেমন / পরিষেবা যা আমি প্রারম্ভকালে চালাতে চাই। এটি আমার বক্তব্য, এটি শুরু / থামবে, তবে "সক্ষম" হবে না।
রুডি দর্শক 15

0

আমার FC15 সিস্টেমে, যখন আমি 'systemctl সক্ষম mysqld.service' চালাচ্ছি, এটি স্বয়ংক্রিয়ভাবে ফিরে এলো:

mysqld.service কোনও নেটিভ সার্ভিস নয়, / sbin / chkconfig এ পুনঃনির্দেশিত। এক্সিকিউটিং / এসবিন / চেককনফিগ মাইএসকিএলডি চালু আছে

সুতরাং চলমান চেষ্টা করুন: /sbin/chkconfig mysqld on


0

যদি আপনি পেয়েছেন ... আপনার পরিষেবা ইউনিট সক্ষম করার সময়, এটি / etc / systemd / সিস্টেমে অনুলিপি করুন

Failed to issue method call: No such file or directory

আপনার পরিষেবা ইউনিট সক্ষম করতে, এর নীচে যুক্ত করুন ... যাতে আপনি mysqld.service সক্ষম করতে পারবেন (এটি প্রতিটি ব্যবহারকারীর নেমস্পেসে সক্ষম)

[Install]
WantedBy=multi-user.target

চিয়ার্স, সুগাটাং ইটলগ

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