টিএল; ডিআর: ব্যবহার করুন sudo -bবা, আরও ভাল ,।openvpn [...] --daemon
যেহেতু আপনি চলছেন openvpn(এবং, কম নির্দিষ্টভাবে, যেহেতু আপনি ব্যাকগ্রাউন্ডে রুট হিসাবে কোনও প্রোগ্রাম চালনা করতে চান ), ব্যাকগ্রাউন্ডে কমান্ডগুলি কীভাবে চালানো যায় সে সম্পর্কে সর্বাধিক বিতরণ করা তথ্য আপনার পরিস্থিতি বিবেচনা করে না। তুমি বলেছিলে:
আমি সিপেনভিপিএন কমান্ডে একটি & যুক্ত করার চেষ্টা করেছি এবং এর সামনে নোপ রাখার চেষ্টা করেছি। দুটোই কাজ করে না।
আপনার আদেশ হ'ল:
sudo openvpn ~/my_connection.ovpn
sudoএর ডিফল্ট কনফিগারেশনের অধীনে , আপনি যদি সম্প্রতি sudoএকই প্রসঙ্গে (ইন্টারেক্টিভ ব্যবহারের জন্য, সাধারণত এটি একই টার্মিনালটির অর্থ) এর জন্য আপনার পাসওয়ার্ডটি প্রবেশ না করে থাকেন তবে এটি আপনার পাসওয়ার্ডের জন্য জিজ্ঞাসা করবে। তবে আপনি যদি যোগ করে পটভূমিতে কমান্ডটি চালনা করেন &তবে আপনাকে লাইনটি প্রদর্শিত হবে না বা এটি টাইপ করার সুযোগ দেওয়া হবে না।[sudo] password for user:
সুতরাং এই পরিস্থিতিতে, কমান্ডটি চালানো, আপনার পাসওয়ার্ড প্রবেশ করানো, এবং পরে এটি ব্যাকগ্রাউন্ডে প্রেরণ করা ইন্টারেক্টিভ ব্যবহারের জন্য এটি করার যুক্তিসঙ্গত উপায় ।
তবে এটি একমাত্র উপায় নয় এবং আপনি যেমন বলেছিলেন, আপনি কোনও স্ক্রিপ্টে এটি করতে চাইবেন না ।
উপায় 1: নিশ্চিত sudoহয়ে নিন যে একটি নতুন টাইমস্ট্যাম্প রয়েছে।
আপনি এটি নিশ্চিত করতে পারেন যে sudoএটির বর্তমান টাইমস্ট্যাম্প রয়েছে যখন এটি প্রথম চালনা করে আপনার কমান্ড চালাতে ব্যবহৃত হয়:
sudo -v
তারপরে, এর পরে, আপনি চালাতে পারেন:
sudo openvpn ~/my_connection.ovpn &
তবে আপনি যখন ব্যাকগ্রাউন্ডে কমান্ড চালাতে চান তখন সাধারণত &(এবং nohup) পুরোপুরি এড়ানো ভাল sudo। এটি বিশেষত স্ক্রিপ্টিংয়ের ক্ষেত্রে।
উপায় 2: ব্যবহার করুন sudo -b। সাধারণভাবে, এটি সাধারণত আপনি চান
পরিবর্তে, আপনি sudoনিজেকে অগ্রভাগে চালাতে পারেন , তবে -bপতাকাটি পাস করুন যাতে sudoপটভূমিতে কমান্ডটি চালিত হয়।
sudo -b openvpn ~/my_connection.ovpn
এটি সাধারণত একটি ভাল উপায়, বিশেষত যদি আপনি কোনও স্ক্রিপ্টে কমান্ডটি রাখছেন। সঙ্গে sudo -bআপনি পাবেন না কাজ নিয়ন্ত্রণ , কিন্তু একটি শেল স্ক্রিপ্ট কাজ নিয়ন্ত্রণ ডিফল্টরূপে নিষ্ক্রিয় করা হয় এবং আপনি সাধারণতঃ এটা ব্যবহার করা উচিত নয় ।
হিসাবে man sudoব্যাখ্যা:
-b, --background
Run the given command in the background. Note that it is not
possible to use shell job control to manipulate background
processes started by sudo. Most interactive commands will
fail to work properly in background mode.
এই কাজ করে কারণ কিছুই পশ্চাদপটে চালু না হওয়া পর্যন্ত পর উবুন্টু (প্রয়োজন হলে) আপনার পাসওয়ার্ড পেয়েছেন এবং নিশ্চিত যে আপনি কমান্ড চালানোর জন্য অনুমতি দেওয়া হয়েছে হয়েছে।
উপায় 3: তবে এর জন্য openvpnআপনার সম্ভবত এটি চালানো উচিত --daemon।
openvpnআপনি যদি --daemonবিকল্পটি দিয়ে চালনা করেন তবে পটভূমিতে স্বয়ংক্রিয়ভাবে চলবে :
sudo openvpn ~/my_connection.ovpn --daemon
পাশ --daemonআপনার পর .opvnফাইলের নাম বদলে আগে; নিম্নলিখিত যুক্তিটি --daemonযদি কোনও হয় তবে ডেমনাইজড openvpnপ্রক্রিয়াটি ব্যবহার করা উচিত এমন নাম হিসাবে ব্যাখ্যা করা হয় । ( এছাড়াও সংযোজন করবেন না& ।)
এটি উপযুক্ত কি না তা নির্ভর করে কোনও ইন্টারঅ্যাকশন openvpnচালানো হওয়ার পরে হওয়া উচিত তবে তা ডিমনাইজ করার আগেই নির্ভর করে। এবং এটি নির্ভর করে, অংশে কী সেট আপ করা হয়েছে তার উপর ~/my_connection.ovpn। তবে যদি openvpnতাৎক্ষণিকভাবে ডিমনাইজ না করা যায়, তবে তাৎক্ষণিকভাবে পটভূমিতে এটি চালানোর অন্যান্য সমস্ত উপায়ও ভেঙে যাবে ।
অতএব, যে কোনো পরিস্থিতি যেখানে আপনি কি জানেন আপনি চান openvpnকরতে শুরু পটভূমিতে চলমান, এবং আপনি জানি তুমি এটা ফোরগ্রাউন্ড ফিরিয়ে আনতে চাই না, আপনি জোরালোভাবে সঙ্গে এটি invoking পদ্ধতি বিবেচনা করা উচিত --daemonবিকল্প। এটি নির্দিষ্ট - openvpnসর্বাধিক প্রোগ্রামগুলি কোনও --daemonবিকল্প সমর্থন করে না , যদিও অনেকগুলি সার্ভার প্রোগ্রামে এই জাতীয় কিছু বিকল্প থাকে। (তবে নাম এবং বাক্য গঠন আলাদা হয়))
সিদ্ধান্ত নেন কিনা বা না এই অপশনটি ব্যবহার করার (এবং আপনি কিভাবে এটা ব্যবহার করতে চান), আমি সুপারিশ আপনি পড়তে ম্যানুয়েল পৃষ্ঠা , বিশেষ করে উপর বিভাগে । এটিতে অনেক দরকারী তথ্য রয়েছে এবং আমি এখানে প্রথম অনুচ্ছেদটি উদ্ধৃত করছি:openvpn--daemon
--daemon [progname]
Become a daemon after all initialization functions are
completed. This option will cause all message and error output
to be sent to the syslog file (such as /var/log/messages),
except for the output of scripts and ifconfig commands, which
will go to /dev/null unless otherwise redirected. The syslog
redirection occurs immediately at the point that --daemon is
parsed on the command line even though the daemonization point
occurs later. If one of the --log options is present, it will
supercede syslog redirection.
The optional progname parameter [...]
উপায় 4 : কখনও কখনও সম্পূর্ণ স্ক্রিপ্টটি রুট হিসাবে চালানো যুক্তিসঙ্গত।
যদি আপনার কাছে এমন স্ক্রিপ্ট থাকে যা রুট হিসাবে একাধিক ক্রিয়াকলাপ চালায় তবে এর কোনও উল্লেখযোগ্য ক্রিয়াকলাপ নেই যা যুক্তিসঙ্গতভাবে রুট হিসাবে চালানো হবে না এবং স্ক্রিপ্টটি কোনও অ-রুট ব্যবহারকারী হিসাবে চালানো থেকে কার্যকর হওয়ার মতো আর কিছুই নেই, স্ক্রিপ্ট ব্যবহারকারী সম্ভবত এটি মূল হিসাবে চালানো উচিত।
যদি এটি হয় sudoতবে স্ক্রিপ্টের আদেশগুলি থেকে আপনার সরিয়ে নেওয়া উচিত । স্ক্রিপ্টটি যখন রুট হিসাবে চালিত হয় তখন কোনও প্রয়োজন নেই sudo। (যদিও রুট ব্যবহারকারী করতে পারেন ডিফল্টরূপে, কোনো ব্যবহারকারী হিসাবে কোনো কমান্ড নিজেই সহ চালানো sudoএবং তা করার একটি পাসওয়ার্ড প্রয়োজন হবে না। তাই আপনি যদি না এর ছুটি দৃষ্টান্ত sudoলিপিতে তারপর এটা করবে সম্ভবত এখনও কাজে।)
sudoস্ক্রিপ্টে যদি আপনার কাছে এমন কোনও দৃষ্টান্ত থাকে যা প্রকৃতপক্ষে রুট (সহ ) ব্যতীত অন্য কোনও ব্যবহারকারী হিসাবে কমান্ড চালাতে ব্যবহৃত হয় , তবে আপনার এখনও সেই দৃষ্টান্তগুলি রাখা উচিত ।-u user
যদি পুরো স্ক্রিপ্টটি রুট হিসাবে চলমান থাকে, তবে পটভূমিতে চালিত কমান্ডগুলি তৈরি করার বেশিরভাগ সাধারণ পদ্ধতি প্রয়োগ করা &এবং যেখানে প্রয়োজন হয় সেখানে ব্যবহার করা হয় nohup(যা আপনি ইতিমধ্যে জানেন)। এই জন্য, যদিও, আপনি এখনও দৃ openvpnwith ়ভাবে --daemonবিকল্পটি ব্যবহার করে বিবেচনা করা উচিত ।