خطاهای پیش آمده در لینوکس و راه حل آنها

تجریبات بر طرف سازی خطاهای لینوکس

خطاهای پیش آمده در لینوکس و راه حل آنها

تجریبات بر طرف سازی خطاهای لینوکس

یک اسکریپت برای تغییر نام دسته ای فایلها، به نام دیگر

این خط script نام فایلهایی رو که قبلا دانلود کرده بودم رو به یک نام کوچکتر تغییر میده

for string in `(ls hq*)` ;do mv $string "$(echo $string|awk -F 'hq-' '{print $2}')"; done


ls hq* 

فایلهایی رو که با hq شروع میشوند لیست میکنه

echo $string|awk -F 'hq-' '{print $2}

این خط نام فایل رو بر اساس واژه 'hq-' برش میزنه و قسمت دومش رو بر میگردونه


و کل دستور نام هر فایل رو مشخص کرده و اونرو به مقداری که گفتم میبره و سپس نام فایل رو به نام جدید تغییر میده.

ssh بسیار کند هستش

ارتباط بین سرورهام روزهای اول بعد از نصبشون خیلی خوب بود.

اما الان خیلی کند شدن


دلیل، میشه با دستور ssh -vv بررسی کرد که کدوم بخش باعث کندیه.

نتیجه. تغییر دو قسمت در sshd_config کمک موثریه

GSSAPIAuthentication

UseDNS

هر دو مقدار باید به no تبدیل بشن





چگونه در bash یک لیست بسازیم و روی اعضای آن عملیات انجام دهیم

برای انجام کاری لازم بود لیستی از سرورها ساخته شوند و سپس به صورت مرتب فایلها روی سرورها ارسال گردند.


برای اینکار از مفهوم زیر ایده گرفتم که اصل آنرا در اینجا میاورم


حالت اول، در این وضعیت هر خط در لیست به عنوان یک عضو در نظر گرفته می شود

اصطلاحا به آن with whitesapce گفته میشود.


listOfNames="RA
RB
R C
RD"

# To allow for other whitespace in the string:
# 1. add double quotes around the list variable, or
# 2. see the IFS note (under 'Side Notes')

for databaseName in "$listOfNames"   #  <-- Note: Added "" quotes.
do
  echo "$databaseName"  # (i.e. do action / processing of $databaseName here...)
done

# Outputs
# RA
# RB
# R C
# RD


without whitespace در اینحالت مشاهده میکنید که خط سوم لیست به صورت دو عضو سوا در نظر گرفته شده است.


listOfNames="RA
RB
R C
RD"

for databaseName in $listOfNames  # Note: No quotes
do
  echo "$databaseName"  # (i.e. do action / processing of $databaseName here...)
done

# Outputs
# RA
# RB
# R
# C
# RD




اسکریپت لیست و اعمال دستورات در خصوص فولدرها و فایلها

دستور زیر فایلها و فولدر ها را در لینوکس نمایش میدهد


for d in *; do
 echo $d
done


به صورت زیر تنها فولدرها نمایش داده می شوند


for d in */ ; do
    echo "$d"
done


نکته اساسی: می توان به جای دستور echo سایر دستورات را به کار برد



چگونه VNC Server را بر روی CentOS 7 نصب و راه اندازی نماییم.

ابتدا باید tiger-vncserver را نصب نماییم


توجه کنید که نصب بودن یک محیط گرافیکی اولیه نظیر Genome الزامی است


 yum install tigervnc-server


پس از نصب  سرویس vncserver را به لیست سرویس ها اضافه میکنیم.


 cp /lib/systemd/system/vncserver@.service /etc/systemd/system/vncserver@:1.service


 vi /etc/systemd/system/vncserver@:1.service


فایل /etc/systemd/system/vncserver@:1.service/ را ادیت کرده و در بخش service به جای <USER> نام کاربر را وارد نمایید


[Service]
Type=forking
# Clean any existing files in /tmp/.X11-unix environment
ExecStartPre=/bin/sh -c '/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :'
ExecStart=/sbin/runuser -l <USER> -c "/usr/bin/vncserver %i"
PIDFile=/home/<USER>/.vnc/%H%i.pid
ExecStop=/bin/sh -c '/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :'


فرض شده کاربر majid در سیستم موجود بوده است


 [Service]
Type=forking
# Clean any existing files in /tmp/.X11-unix environment
ExecStartPre=/bin/sh -c '/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :'
ExecStart=/sbin/runuser -l majid-c "/usr/bin/vncserver %i"
ExecStop=/bin/sh -c '/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :'
PIDFile=/home/majid/.vnc/%H%i.pid



می بایست فایروال را تنظیم کنید، در اینجا firewalld پیش فرض CentOS-7 استفاده شده است.


firewall-cmd --permanent --zone=public --add-service vnc-server
firewall-cmd --reload


حال می بایست به شناسه majid رفته و در آنجا vncserver را اجرا نماییم


 su - majid
vncserver
exit


سپس دوباره به شناسه root برگشته و سرویس vncserver را فعال و اجرا می نماییم.


 systemctl daemon-reload


 systemctl enable vncserver@:1.service


 systemctl start vncserver@:1.service


سپس با استفاده از یک vncclient به سرور فوق متصل میشویم.