NOC online · 24/7Longview, TX · +1 323 412 0665
KinetikatechServers · Security · Websites
BN

লিনাক্স কমান্ড এবং শেল দক্ষতা

ব্যাশ স্ক্রিপ্টিং: 'আমার বাক্সে কাজ করে' থেকে প্রোডাকশন পর্যন্ত

ব্যাশ তার স্লট অর্জন করে যখন একটি টাস্ক আঠালো হয়: অর্কেস্ট্রেট কমান্ড, সাধারণ পাঠ্য ঝগড়া, এবং সম্পূর্ণভাবে বাক্সে থাকুন। এর শিল্পের খ্যাতি ল্যান্ডিং থেকে আসে, ধারণা নয়: অপরীক্ষিত পাইপলাইনগুলি এমন একটি সার্ভারে ক্রনে পাঠানো হয়েছে যেখানে একটি ভেরিয়েবল সেট করা হয়নি বা একটি ফাইলের নামের একটি স্থান ছিল। শৃঙ্খলা যান্ত্রিক এবং সস্তা, এবং এর চারটি অংশ রয়েছে: কঠোর মোড, উদ্ধৃতি, শেলচেক এবং লগিং যেভাবে অপস এটি পরে পড়বে।

মূল বিষয়সমূহ

  • প্রতিটি গুরুতর স্ক্রিপ্ট সেট -ইউও পাইপফেইল দিয়ে খোলে: আনসেট ভেরিয়েবল ব্যর্থ হয়, কমান্ড ব্যর্থতা স্ক্রিপ্ট বন্ধ করে দেয়, পাইপলাইন পৃষ্ঠে থাকে; এটি ছাড়া, ত্রুটিগুলি উত্পাদনে পৌঁছানো পর্যন্ত নীরবে পাস করে।
  • উদ্ধৃতি ভেরিয়েবল এবং কমান্ড প্রতিস্থাপন: "$var" এবং "$(cmd)"; স্পেসগুলিতে শব্দ বিভক্ত করা সর্বকালের ক্লাসিক, এবং IFS কিছু সাইটের সুপারিশ করা একটি বাগ যা আপনি মনে রাখার জন্য বেছে নিচ্ছেন।
  • ভেরিয়েবলের আগে ব্রেস সম্প্রসারণ ঘটে: rm -rf "${CLEANUP:?}"/{a,b} CLEANUP আনসেট সহ উদ্দেশ্যের চেয়ে ভিন্নভাবে প্রসারিত হয় এবং আপনি যে জিনিসগুলি রাখতে চান তা সরিয়ে দেয়; ${VAR:?} চেক হল আরএম-সেফটি ইডিয়ম যা একবার শেখার মতো।
  • shellcheck প্রতিটি পরিবর্তনের জন্য তার স্থান অর্জন করে: এটি অ-উদ্ধৃত গ্লোব, নাগালযোগ্য কোড এবং '$(ls) এর জন্য f' প্যাটার্নগুলি ধরে যা স্পেস সহ ফাইলের নাম খায়; এটি CI তে চালান এবং বাগগুলি ক্রোন পৌঁছানো বন্ধ করে দেয়।
  • টেম্প ওয়ার্ক এবং ক্লিনআপ পেয়ার করা হয়েছে: TMP=$(mktemp -d), ট্র্যাপ 'rm -rf "$TMP"' EXIT, এবং কোন অরফান্ড স্ক্র্যাচ ডাইরস প্লাস না 'যদি ত্রুটি হয় তাহলে রিমুভ' প্রতিটি শাখায় ছিটিয়ে দেয়।
  • Read loops নিরাপদ উপায়: যখন IFS= read -r -d '' f ফাইলের নামগুলিকে নতুন লাইন এবং স্পেস সহ find -print0 এর মাধ্যমে পরিচালনা করে; 'for f in $(ls)' হল বাগ শেলচেক ফ্ল্যাগ এবং পুরানো স্ক্রিপ্ট সর্বত্র এখনও বহন করে।
  • প্রস্থান কোড এবং লগগুলি ops-এর সাথে কথা বলে: স্টেজের নাম সহ stderr (>&2) এর প্রতিধ্বনি, বাস্তব ব্যর্থতার ক্ষেত্রে ননজিরো থেকে প্রস্থান করুন এবং ক্রোনের মেল বা জার্নাল্ড আপনাকে একটি লাইন দেখাতে দিন যা আপনার আসলে 3 a.m.
  • তাড়াতাড়ি বাড়ান: JSON পার্সিং, থ্রি-প্লাস লেভেলের নেস্টিং, HTTP কল, বা যেকোনো স্টেটফুল লজিক Python বা awk-এর অন্তর্গত; বাশ একটি সাধারণ-উদ্দেশ্যের ভাষায় বাঁকানো হয় যেখানে এর খ্যাতি অর্জিত হয়েছিল।

মাঠের নোট

আমাদের ব্রেস-প্রসারণের দাগ: rm -rf "${CLEANUP}"/{a,b} CLEANUP আনসেট সহ শেলটি ঠিক যেভাবে প্রসারিত হয়েছে, উদ্দেশ্য নয়, চাইছিল। এর মতো প্রতিটি পথ এখন ${VAR:?} গার্ড বহন করে, এবং কেউ এই বিলটি দুইবার পরিশোধ করেনি।

সচরাচর জিজ্ঞাসা

#!/bin/bash বা #!/usr/bin/env bash?

env কন্টেইনার এবং macOS ইন্সটল জুড়ে জিতেছে যেখানে bash অন্যত্র বাস করে; shebang সেট -euo পাইপফেল আসলে উপস্থিত থেকে কম গুরুত্বপূর্ণ এবং প্রতিটি পরিবর্তনে শেলচেক পাস করা হয়।

আমার স্ক্রিপ্ট ম্যানুয়ালি কাজ করে কিন্তু ক্রনে ব্যর্থ হয়। কেন?

ক্রন একটি খালি পরিবেশে চলে: PATH ছোট, কোন লগইন প্রোফাইল নেই এবং আপেক্ষিক পাথগুলি ভুল বাড়িতে নির্দেশ করে৷ পরম পাথ ব্যবহার করুন, PATH স্পষ্টভাবে সেট করুন এবং ডিবাগিংয়ের জন্য bash -x রিপ্লে রাখুন।

সার্ভারের কাজের জন্য ব্যাশ বা পাইথন?

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

আমি কীভাবে নিরাপদে স্ক্রিপ্ট মুছে ফেলব?

প্রতিটি ভেরিয়েবলকে উদ্ধৃত করুন, শুধুমাত্র mktemp-উত্পাদিত বা স্পষ্টভাবে কনফিগার করা পাথগুলিকে লক্ষ্য করুন, একটি ড্রাই-রান মোড দিয়ে চালান যা মুদ্রণ করে যা এটি মুছে ফেলবে এবং ${VAR:?} রক্ষক ভেটো ভেরিয়েবলগুলিকে rm দেখার আগে আনসেট করতে দিন৷

লিনাক্স কমান্ড এবং শেল দক্ষতা নিয়ে Kinetikatech কীভাবে সাহায্য করে

এটাই আমরা প্রতিদিন করি: কমান্ড এবং স্ক্রিপ্টিং অভ্যাস যা নির্ধারণ করে যে একজন প্রশাসক একটি সার্ভার পরিচালনা করে বা এটির সাথে লড়াই করে: অনুসন্ধান, রূপান্তর, স্থানান্তর, এবং টেক্সট এবং প্রক্রিয়াগুলিকে তত্ত্বাবধান করে যা প্রতিটি বেস ইনস্টলে থাকে। আমাদের Linux সার্ভার নিরাপত্তা and সার্ভার ব্যবস্থাপনা সেবাটি শুরু থেকে শেষ পর্যন্ত সব নেয় — মূল্যায়ন, বাস্তবায়ন, ২৪/৭ পর্যবেক্ষণ, আর ৩০ মিনিটের মধ্যে জরুরি সাড়া।

একজন প্রকৌশলীর সঙ্গে কথা বলুন

সার্ভার সমস্যা? হ্যাক করা সাইট? ধীর ওয়েবসাইট?

জরুরি সমস্যার উত্তর ৩০ মিনিটের মধ্যে — দিনে ২৪ ঘণ্টা, সপ্তাহে ৭ দিন।

জরুরি সহায়তা অনুরোধ করুন support@kinetikatech.com