বাশে সু এর সাথে একাধিক কমান্ড চালাচ্ছে


10

আমি su -cসম্পূর্ণরূপে রুট একাধিক কমান্ড হিসাবে চালাতে ব্যবহার করতে চাই । আমি এটির জন্য কোনও অতিরিক্ত স্ক্রিপ্ট ব্যবহার করতে চাই না।

আমি নিম্নলিখিত চেষ্টা করেছিলাম:

su root -c "tcpdump -i wlan0 -s 1500 -w CCCCCC & " -c "ls -lh"

তবে এটি কেবল lsপ্রথমটিকেই কার্যকর করে না।

আমি নিম্নলিখিত চেষ্টা করেছিলাম:

su root -c "tcpdump -i wlan0 -s 1500 -w CCCCCC & ; ls -lh;"

তবে এটি বলে যে সেমিকোলনে একটি ত্রুটি রয়েছে ;

আপনি কীভাবে তা জানেন?

উত্তর:


14

এই আদেশটি ঠিক আছে:

su root -c "date; ls -lh"

তবে এই আদেশে:

su root -c "tcpdump -i wlan0 -s 1500 -w CCCCCC & ; ls -lh;"

যেহেতু আপনার &আগে রয়েছে ;তাই আপনি ত্রুটি পাচ্ছেন। &কমান্ডটি সরিয়ে এবং পুনরায় কার্যকর করার চেষ্টা করুন ।

অথবা আপনি আপনার আদেশটি এভাবে চালাতে পারেন:

su root -c "(tcpdump -i wlan0 -s 1500 -w CCCCCC &); ls -lh"

অবশ্যই, সেখানে প্রথম বন্ধনী যোগ করার জন্য যদি না ওপি সত্যিই কোন কারণ সত্যিই সত্যিই একটি টাইপ করতে চায় ;মধ্যে tcpdumpএবং lsমাত্র সেমিকোলন বাদ এবং এটি কাজ করবে - কমান্ড।
জি-ম্যান

2

অনুভা যেমন বলে , তোমার

su root -c "tcpdump -i wlan0 -s 1500 -w CCCCCC & ; ls -lh;"

কমান্ড ব্যর্থ হচ্ছে কারণ আপনাকে &অবিলম্বে অনুসরণ করার অনুমতি নেই ;। আপনি সরাসরি শেলের মধ্যে কমান্ডগুলি টাইপ করে এটি দেখতে পারেন:

  • true & true  কাজ
  • true & ; true কাজ করে না

আপনি যদি চান tcpdumpপটভূমি চালানোর জন্য কম্যান্ড, অপসারণ ;, হিসাবে

su root -c "tcpdump -i wlan0 -s 1500 -w CCCCCC & ls -lh;"

(এবং আপনার ;শেষেও দরকার নেই, তবে এটি ক্ষতি করে না)।


1

আমি মনে করি nohupআপনি যা চান কমান্ডটি তা আপনাকে পাবে ... পটভূমিতে চলছে tcpdump (কোনও অ্যাম্পারস্যান্ড দরকার নেই):

su root -c "nohup tcpdump -i wlan0 -s 1500 -w CCCCCC ; ls -lh"

হাই আমি তাই মনে করি। কোনও ব্যবহারকারী সংযোগ বিচ্ছিন্ন হওয়ার পরেও পটভূমিতে চলমান কমান্ডগুলি NOHUP ছাড়েনি। আমার মনে নেই। অনেক ধন্যবাদ.

(1) nohupআপনি যখন পটভূমিতে কমান্ডগুলি চালাবেন এটি ব্যবহার করা ভাল তবে এই প্রশ্নের সাথে এর আসলে কোনও সম্পর্ক নেই। (২) এই উত্তরটি ভুল - nohupনিজেই কোনও আদেশ পটভূমিতে চালিত করে না; আপনাকে এখনও টাইপ করতে হবে &(কমান্ডটিতে একটি সিনট্যাক্স ত্রুটি সহ যা আমাদের যেখানে শুরু হয়েছিল সেখানে ফিরে যায়)।
জি-ম্যান

0

কেবল অনুভার দুর্দান্ত উত্তরটি যুক্ত করতে :

আপনি এটির মতো ব্যবহার করতে পারেন {}:

su root -c "{ tcpdump -i wlan0 -s 1500 -w CCCCCC & }; ls -lh"

{}এটি একটি ()সাব শেল তৈরি করে না তার চেয়ে খানিকটা দক্ষ। {}আমাদের যদি ইতিমধ্যে না থাকে তবে তার পরে {এবং তার ;আগে কোনও জায়গার দরকার নেই ।}&


অবশ্যই, যদি না ব্যবহারকারী সত্যই সত্যই সত্যিই আর কমান্ডগুলির ;মধ্যে একটি টাইপ করতে চান - কেবল সেমিকোলনটি ছেড়ে যান এবং এটি কার্যকর হবে তবে এগুলি বন্ধনীর বা বন্ধনী যুক্ত করার কোনও কারণ নেই । tcpdumpls
জি-ম্যান

-1

&&আপনার আদেশগুলি পৃথক করতে ব্যবহার করুন :

$ su -c "ls && ls"

আছ..এই আমার ত্রুটি। আমি প্রক্রিয়াটি ব্যাকগ্রাউন্ডে চালাতে চেয়েছিলাম তবে আলাদা কমান্ডের বিষয়ে আমি && সম্পর্কে অবগত ছিলাম না। থেক্স

3
&& এর অর্থ "প্রথম সফল হলে কেবলমাত্র দ্বিতীয় কমান্ডটি কার্যকর করুন"। যদি আপনার প্রথম কমান্ডটি ত্রুটি থেকে যায় তবে দ্বিতীয়টি চলবে না। এটি সাধারণত ভাল তবে আমি && খাঁটি বিভাজক হিসাবে বর্ণনা করতে দ্বিধা করব।
লিও

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