Rc.local থেকে বুটে একটি স্ক্রিন সেশন চালান


10

আমি বুট-এ rc.local এ কোনও নির্দিষ্ট ব্যবহারকারীর অধীনে একটি বিচ্ছিন্ন স্ক্রিন চালানোর চেষ্টা করছি। নীচের কোডটি আমার এখন পর্যন্ত যা আছে তা কিন্তু এটি আমার পক্ষে কাজ করছে না। সু অংশটি আমাকে একটি ত্রুটি দিচ্ছে বলে মনে হচ্ছে।

su - username -c /usr/bin/screen -dmS test bash -c '/var/www/path/to/script/script.sh; exec bash'

উত্তর:


13

আমি মনে করি উভয় -cপরামিতি ( suএবং bash) সর্বনিম্ন উদ্ধৃত করতে হবে।

su - username -c "/usr/bin/screen -dmS test bash -c '/var/www/path/to/script/script.sh; exec bash'"

এছাড়াও -শেষ হতে পারে এবং এখানে কাম্য হতে পারে না (দেখুন man su)।


আরও কয়েকটি মন্তব্য। আপনার মতো ওয়ান-শট কমান্ডের জন্য আরও ভাল পছন্দ sudo হতে পারে তবে এটি অগত্যা নয়:

sudo -iu username /usr/bin/screen -dmS test bash -c '/var/www/path/to/script/script.sh; exec bash'

বিশেষত, আপনি একটি কম স্তরের সাথে উদ্ধৃতি ব্যবহার করতে পারেন sudo

আপনি যে সাবধানতা অবলম্বন করতে চান অন্যটি হ'ল সুবিধাযুক্ত প্রসঙ্গে নিরঙ্কুশ পথ ছাড়াই আদেশগুলি সম্পাদন করা। এটি su(বা sudo) তবে bashআপনার কমান্ডে যাওয়ার পথটিকেও ধারণ করে । আপনি ঠিক সঙ্গে এটি করছেন screen

কেবলমাত্র নিম্নলিখিতটি পরীক্ষা করা হয়েছে এবং এটি দুর্দান্তভাবে কাজ করে। আমি মনে করি এটিই -আপনার মূল লাইনের মূল সমস্যা:

/bin/su username -c "/usr/bin/screen -dmS test bash -c '/home/username/test.sh; exec bash'"

অশুভ মন্তব্য: আপনি কেন tmuxচেষ্টা করবেন না ? আমি সম্প্রতি স্যুইচ করেছি এবং কখনই পিছনে ফিরে দেখিনি। আমি শুধু সঙ্গে সঙ্গে পরিবর্তন করা প্রয়োজন উপসর্গ কী সমন্বয় ছিল যা tmuxডিফল্ট Ctrl+ + B- এতে গনুহ ফিরে screen'র Ctrl+ + A

এটি আপনার উইন্ডোটিকে প্রায় স্বেচ্ছাসেবী সংখ্যক প্যানে (উল্লম্ব এবং অনুভূমিকভাবে) বিভক্ত করতে দেয় এবং এর কনফিগারেশন ফাইল ফর্ম্যাটকে (স্ট্যাটাসের সমেত একটি সহ) প্রকৃতপক্ষে মানুষের কাছে বোধগম্য। অবশ্যই tmuxহিসাবে ভাল হিসাবে screenযখন আপনি কেবল কিছু প্রোগ্রাম / স্ক্রিপ্ট মূলত পটভূমিতে ডেমন হিসেবে লেখা না চালাতে চান। আপনি যদি টার্মিনাল মাল্টিপ্লেক্সারের সাথে ইন্টারঅ্যাক্ট করতে চান তবে আমি উষ্ণতার সাথে সুপারিশ করছি tmux


আমি কয়েক চেষ্টা করে দেখুন। আমি যে স্ক্রিপ্টটি চালিয়ে যাচ্ছি তা নিখুঁত পাথ ব্যবহার করে, তাই আপনি কি সুপারিশ করবেন suনাকি sudo?
এটিএলক্রিস

1
sudoআপনি ইতিমধ্যে মূল যেখানে rc.local থেকে চালানো ভাল পছন্দ নয়, যেহেতু আপনি একটি লগইন শেল মিস করবেন। পার্শ্ব নোটে, একবার দেখুন /etc/init/tty1.conf- এখানে পর্দার সাথে [এ] গেটটি প্রতিস্থাপন করুন।
জলহস্ত

@ একাওয়ার্ড: আমি যখন লিখি তখন মনে মনে ছিল তবে তা নয় । ক্লুটি আসলেই স্বাভাবিক অবস্থায় রয়েছে sudo su -... sudo( su
সুপারইউসার ডু

1
আমার বলতে হবে, আমি আপনার খারাপ মন্তব্যের কারণে এই পোস্টটি +1 করছি। আমি এটা ভালোবাসি! এটি পর্দার একটি দুর্দান্ত প্রতিস্থাপন, যেহেতু কেউ এটি নতুন সেশন শুরু করতে বাধ্য করতে পারে।
কোয়ান্টাম পদার্থবিজ্ঞানী

@aaaaaaard ঠিকঠাক sudoব্যবহার করে লগইন শেল শুরু করতে পারে -i
মুরু


1

আমি যা ব্যবহার করেছি এটি এখানে আমি এটিকে সবচেয়ে পরিষ্কার এবং সর্বাধিক সরল বলে মনে করেছি (নিজে কাজ করার পরীক্ষিত):

"ব্যবহারকারীকে" ব্যবহারকারীর সাথে এটি চালানোর জন্য প্রতিস্থাপন করুন। স্ক্রিন সেশনটির নাম হিসাবে "নেম্যুচুজ" প্রতিস্থাপন করুন "/script/start.bash" আপনার স্ক্রিপ্টের পথে প্রতিস্থাপন করুন।

/usr/bin/sudo -u user /usr/bin/screen -dmS nameyouchoose /script/start.bash

সূত্র: http://realtechtalk.com/How_to_start_screen_in_bash_script_ or_from_etcrclocal_on_startup_as_a_specific_user-1980- খণ্ড


0

বর্তমান ব্যবহারকারী হিসাবে নতুন বিচ্ছিন্ন স্ক্রিনে একটি স্ক্রিপ্ট শুরু করা (rc.local = রুট):

screen -dmS <session name> <command>উদাহরণস্বরূপ:

screen -dmS screenName bash /home/user/run.sh


Rc.local থেকে স্ক্রিপ্ট শুরু করা হচ্ছে user:

runuser -l user -c 'screen -dmS screenName bash /home/user/run.sh'

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