কনট্যাব ব্যবহার করে ব্যাশ স্ক্রিপ্টের সাথে একটি স্ক্রিন সেশন তৈরি করুন


8

সার্ভার বুট করার সময় আমরা একটি জাজার ফাইলটি চালাতে চাই (আমরা একটি ভিপিএস ব্যবহার করছি), এবং তাই আমি ক্রন্টব সম্পাদনা করে crontab -eএরপরে যুক্ত করেছিলাম @reboot bash /home/bash/startserver.sh। তবে স্ক্রিপ্টটি মোটেও কাজ করে না এমন জায়গায় পৌঁছতে পারি নি।

এখানে আমার স্ক্রিপ্ট:

#!/bin/bash
screen -S bukkit
cd $HOME/server
java -jar bukkit.jar

আমার যে কারণটি ব্যবহার screenকরা দরকার তা হ'ল কারণ যখন আমি বুককিট.জার শুরু করি তখন এটি একটি কনসোলে যায় যেখানে আমি সেই প্রোগ্রামের জন্য আরও কমান্ড লিখতে পারি (আমি নিশ্চিত যে আপনি এই সাইটের মাইনক্রাফ্ট এবং এর সার্ভারগুলির সাথে সমস্ত পরিচিত though , হাহা), তবে এটি চলাকালীন আমার রুট হিসাবে এবং অন্যান্য প্রোগ্রামগুলির জন্য অন্যান্য কমান্ডগুলি করতে সক্ষম হওয়া প্রয়োজন, এবং এমনকি আমার পিটিটিওয়াই সেশনটি বন্ধ করে দেওয়া উচিত।

একমাত্র সমস্যাটি হ'ল এই স্ক্রিপ্টটি চালিত হওয়ার পরে এটি একটি স্ক্রিন সেশন তৈরি করে, তবে আইডি ফাঁকা থাকায় এটি আইডি তালিকাভুক্ত হয় নাscreen -ls । বরং আমাকে /run/screen/S-rootআইডি সন্ধান করতে হবে এবং তারপরে টিপিকালটি ব্যবহার করতে screen -X -S $name quitহবে।

হতে পারে এটি এমনকি সম্ভব নয়, বা সম্ভবত এটি করার একটি সহজ উপায় আছে (আমি আরও সহজ পছন্দ করব) তবে কেন এটি কাজ করছে না তা আমি বুঝতে পারি না। এবং যদি এটি সম্ভব হয় তবে screen -S bukkitব্যাশ স্ক্রিপ্ট চলাকালীন একটি সেশনে পুনরায় যোগদান করা কি সম্ভব ? (একাধিক প্রশ্ন, আমার ধারণা, তবে আপনার সহায়তার জন্য আপনাকে অনেক ধন্যবাদ! (বন্ধনী))

উত্তর:


15

বিচ্ছিন্ন মোডে স্ক্রিনটি শুরু করুন এবং এটির ভিতরে এটি আপনার কমান্ডটি চালিত করুন:

screen -d -m -S bukkit bash -c 'cd $HOME/server && java -jar bukkit.jar'

আপনি একটি ডেডিকেটেড স্ক্রিপ্ট তৈরি করতে চাইতে পারেন bukkit.sh:

#!/bin/bash -e
cd ~/server
java -jar bukkit.jar

যাতে স্ক্রিপ্টটি আরও জটিল হয়ে ওঠে আপনার পক্ষে একটি দীর্ঘ লাইন লিখতে হবে না screenএবং screenকমান্ডটি একইভাবে থাকতে পারে, সহজভাবে:

screen -d -m -S bukkit path/to/bukkit.sh

1
আমি দুটি অপশন করার চেষ্টা করলাম, একটি দীর্ঘতর ফাইলের সাথে একটি এবং তারপরে দুটি পৃথক ফাইল সহ, তবে এখন স্ক্রিন সেশনটি মোটেই তৈরি হচ্ছে না। আমি কমান্ড লাইন থেকে সরাসরি কমান্ডগুলি চালনার চেষ্টা করেছি, তবে এটি কার্যকর হয়নি ..: /
জ্যাকব লারসন

আপনি একটি ত্রুটি বার্তা বা কিছু পেয়েছেন? প্রথমে bukkit.shস্ক্রিপ্টটি কমান্ড লাইনে কাজ করুন। এর পরে, পরীক্ষা করুন যে screen -S bukkit path/to/bukkit.shকাজ করে। এর পরে, পরীক্ষা করুন যে screen -d -m -S bukkit path/to/bukkit.shকাজ করে। অবশেষে, ক্রোন সেটআপ করুন। প্রথমে সর্বাধিক সহজ জিনিসটি ব্যবহার করে দেখুন এবং কিছুটা পদক্ষেপ নিন যাতে আপনি বুঝতে পারেন কোন পদক্ষেপটি বিরতি। আমাকে বলুন, এবং যদি আপনার সহায়তা প্রয়োজন হয় তবে আপনি পেয়েছেন ত্রুটি বার্তা।
জানোস

1

update-rc.dবুট চালু করার সময় আপনার নিম্নলিখিতটি হওয়া উচিত :

# update-rc.d cron defaults

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