1:yum源的配置與使用
創(chuàng)建一個(gè)本地yum源
base源指向[https://mirrors.aliyun.com/centos/7/os/x86_64/]
epel源指向[https://mirrors.aliyun.com/epel/7Server/x86_64/]-
安裝開發(fā)包組
移動(dòng)/etc/yum.repos.d/* 至 ./back 文件夾然后創(chuàng)建文件bash.repo
vim /etc/yum.repos.d/bash.repo
bash.repo內(nèi)容如下
[base]
name=base
baseurl=https://mirrors.aliyun.com/centos/7/os/x86_64/
gpgcheck=0 [epel]
name=epel
baseurl=https://mirrors.aliyun.com/epel/7Server/x86_64/
gpgcheck=0
#清空緩存 yum clean all
#獲取新的repo數(shù)據(jù)yum repolist yum repolist
#使用 yum groups list 查看包組信息#安裝開發(fā)包組
如果是中文環(huán)境: yum groups install 開發(fā)包組
如果是英文環(huán)境: yum groups install Development Tools
2:復(fù)制/etc/ssh/sshd_config 到/tmp/中并更名為sshd_config.bak。將/tmp/sshd_config.bak文件中所有以非#號開頭與包含空白字符的行保存至/tmp/sshd_config中
#復(fù)制文件
cp /etc/ssh/sshd_config /tmp/sshd_config.bak
#將文件中的行保存到/tmp/sshd_config
cat /tmp/sshd_config.bak |grep -E'#|[[:space:]]*$'>/tmp/sshd_config
3:編寫腳本/root/bin/sysinfo.sh顯示當(dāng)前主機(jī)系統(tǒng)信息,包括主機(jī)名,操作系統(tǒng)版本,內(nèi)核版本,CPU型號,內(nèi)存大小,硬盤分區(qū)。
#!/bin/bash
echo "=======hostname====== "
hostname
echo -e "\n=======release====== "
cat /etc/centos-release
echo -e "\n=======kernel====== "
uname -r
echo -e "\n=======cpuinfo====== "
cat /proc/cpuinfo|grep 'model name'
echo -e "\n=======free====== "
free
echo -e "\n=======disk====== "
df
echo "==========end========== "
4:給root用戶定義別名命令vimnet,相當(dāng)于vim /etc/sysconfig/network-scripts/ifcfg-ens33,并使root執(zhí)行history命令時(shí),顯示每個(gè)命令執(zhí)行的具體時(shí)間。
#定義別名,此配置只在當(dāng)前登錄有效
alias vimnet='vim /etc/sysconfig/network-scripts/ifcfg-ens33'
#定義變量
export HISTTIMEFORMAT="%Y%m%d-%H%M%S"
#長期生效寫入文件 只針對于root用戶,寫入/root/.bashrc
全局生效寫入文件,/etc/bashrc
6:指出軟鏈接與硬鏈接的異同之處:
軟鏈接是在目錄數(shù)據(jù)塊中創(chuàng)建一個(gè)地址指向(指向新的inode),inode尋址索引放入的是被鏈接文件的
地址;
硬鏈接是在目錄數(shù)據(jù)塊中直接引用被鏈接文件的inode軟鏈接可以跨分區(qū),硬鏈接不可以軟鏈接刪除
可不影響目標(biāo)文件(特殊參數(shù)除外),硬鏈接鏈接次數(shù)歸零則刪除硬鏈接不占用inode 軟鏈接占用
7:下載編譯安裝httpd 2.4最新版本,寫出安裝過程
#下載源碼
官方網(wǎng)站:http://www.apache.org/
#解壓縮包 (使用tar命令)
tar xvf /httpd.2.4.**.tar.bz2
#準(zhǔn)備開發(fā)環(huán)境,
沒有安裝使用命令yum 命令進(jìn)行安裝 yum groups install Development Tools
#進(jìn)入目錄,并使用configure生成配置文件,具體參數(shù)可以查看INSTALL 或./configure --help ./configure --prefix="/app/apache"
#編譯,安裝 make && make install
8:過濾ifconfig命令結(jié)果中所有大于0且小于255的三位數(shù)
大于0 小于255的數(shù)
ifconfig |grep -E '\b(([1-9])|([1-9][0-9])|(1[0-9][0-9])|(2[0-4][0-9])|(25[0-4]))\b'
大于0小于255的三位數(shù)
ifconfig |grep -E '\b((1[0-9][0-9])|(2[0-4][0-9])|(25[0-4]))\b'
9:將用戶mage被誤刪除的的家目錄恢復(fù),復(fù)制/etc/shadow到mage家目錄中。并設(shè)置只有用戶wang可以讀取/home/mage/shadow
#復(fù)制模版文件
cp -r /etc/skel /home/mage
#更改權(quán)限 屬主組
chown -R mage.mage /home/mage
chmod -R 700 /home/mage
#復(fù)制文件 cp /etc/shadow /home/mage/shadow
#更改權(quán)限兩種方法,基本的屬主屬組或ACL
#基本的屬主方法,將wang用戶加入到mage組,設(shè)置mage家用戶組有讀權(quán)限,使wang可以訪問mage
家用戶
groupmems -a wang -g mage
chmod g+r /home/mage
chown wang /home/mage/shadow
chmod -R 400 /home/mage/shadow
#acl方法,確保掛載時(shí)開啟了acl功能
setfacl -m u:wang:rx /home/mage/
chown root /home/mage/shadow
setfacl -m u:wang:r /home/mage/shadow
10:統(tǒng)計(jì)/var/log/httpd/access.log日志訪問頻繁前十的地址,并從大到小排序
#輸出排序,
cat /var/log/httpd/access.log |cut -d" " -f1|sort |uniq -c|sort -nr|head 1
220 192.168.1.117
1134 192.168.1.31
583 192.168.1.113
204 172.16.100.76
112 172.16.233.133
110 192.168.1.118
83 192.168.1.110
68 192.168.1.107
68 172.16.250.227
42 192.168.6.1
11:開啟兩個(gè)終端,將終端1 中輸入命令的執(zhí)行結(jié)果輸出,并同時(shí)輸出到終端2
###發(fā)送信息
ttt=`date` ;
echo "$ttt";
echo "$ttt">/dev/pts/2 date|tee /dev/pts/2
12:誤刪除/lib64/libc.so.6系統(tǒng)庫文件,如何恢復(fù)之,實(shí)驗(yàn)說明
#刪除libc.so.6
1. ldd `which ls`
2. rm /lib64/libc.so.6
#恢復(fù)
3. 直接關(guān)閉電源,然后重起
4. 可以開機(jī)進(jìn)入固件,或開機(jī)時(shí) 按1次esc 鍵,設(shè)置從光盤引導(dǎo)啟動(dòng)
5. 進(jìn)入光盤救援模式, 6 7進(jìn)入的界面選項(xiàng)根據(jù)實(shí)際情況選擇。
6. 復(fù)制/lib64/libc.so.6 到 /mnt/sysimge/lib647. 關(guān)閉selinux ,設(shè)置
/etc/sysconfig/selinux中為disabled8. 重起,
13:誤刪除rpm包命令,如何恢復(fù)之,實(shí)驗(yàn)說明
#恢復(fù)
1.同樣進(jìn)入安全模式
2.在/mnt目錄下創(chuàng)建目錄 cdrom
3.掛載安裝光盤到cdrom mount /dev/sr0 /mnt/dcrom
4.安裝 rpm 軟件 ,rpm -ivh /mnt/cdrom/Packges/rpm.*****.rpm --force --root
=/mnt/sysimge
5.重起
14:計(jì)算2+4+6+…+96+98+100之和。
#bc 實(shí)現(xiàn)
echo {2..100..2} |tr " " "+" |bc
#循環(huán)實(shí)現(xiàn)
let sum=0
for i in `seq 2 2 100` ;
do let sum+=i
done
echo "$sum"
14:取/etc/sysconfig/network-scripts/ifcfg-ens33基名,用兩種方法實(shí)現(xiàn)。
echo "/etc/sysconfig/network-scripts/ifcfg-ens33" |grep '[^/]*$'
-o ifcfg-ens33
echo "/etc/sysconfig/network-scripts/ifcfg-ens33" |rev|cut -d"/" -f1|rev
ifcfg-ens33
15:對/etc/目錄,分別執(zhí)行命令,實(shí)現(xiàn)以下功能
#將當(dāng)前的工作目錄設(shè)置成為 /etc
cd /etc
#顯示目錄下的文件(大小排序)
ls -lS
#顯示目錄下的隱藏文件 顯示目錄下所有的隱藏文件,及隱藏目錄中的隱藏文件
ll -a .[^.]*
# 顯示目錄下的隱藏文件及文件夾
ls -A |grep -E "^."
#只顯示目錄下的隱藏文件
find ./ -maxdepth 1 -mindepth 1 -name "." -type f
#只顯示目錄
ls -l |grep ^d ls .// -d find ./ -maxdepth 1 -mindepth 1 -type d
#按mtime 時(shí)間排序
ls -l -t
#按atime時(shí)間排序
ls -l -u
16:編寫/root/bin/excute.sh,實(shí)現(xiàn)與用戶交互,判斷用戶給予的參數(shù)是否可讀,可寫,可執(zhí)行。
#!/bin/bash
#author:cxj
#sno: 35
#desc:This is for check files
[[ -e $1 ]] || { echo "文件不存在";exit 1 ;}
R=$([ -r $1 ] && echo "可讀"||echo "不可讀" )
W=$([ -w $1 ] && echo "可寫"||echo "不可寫" )
X=$([ -x $1 ] && echo "可執(zhí)行" || echo "不可執(zhí)行")
echo "當(dāng)前用戶對$1 $R $W且$X"
17:編寫/root/bin/create.sh可以生成新的腳本包括作者、聯(lián)系方式、版本、時(shí)間和描述等,并且可以直接對其進(jìn)行編輯,編輯完后自動(dòng)加上執(zhí)行權(quán)限。
#!/bin/bash
# 判斷參數(shù)個(gè)數(shù)
[[ "$#" -eq 1 ]]||{ echo "usage:cshell.sh shellname " ; exit; }
touch "$1"
echo "#!/bin/bash
#author :cxj
#sno :M35
#phone : 156XXXXXXXX
#version:2.0
#date :`date +%F`
#desc :$2" > "$1"
chmod +x "$1"
vim "$1"
18:寫一個(gè)腳本,讓它可以傳遞兩個(gè)參數(shù)后,實(shí)現(xiàn)對該參數(shù)的加、減、乘、除運(yùn)算并輸出運(yùn)算后的值。
#!/bin/env bash
#_____參數(shù)檢測_________#
[[ "${1}" ]] || { echo "參數(shù)為空" ; exit 2 ; }
[[ "${2}" ]] || { echo "參數(shù)為空" ; exit 3 ; }
[[ "${1}" =~ ^[0-9]*$ ]] || { echo "參數(shù)非數(shù)字" ; exit 4 ; }
[[ "${2}" =~ ^[0-9]*$ ]] || { echo "參數(shù)非數(shù)字" ; exit 4 ; }
#_____數(shù)值計(jì)算________#
echo "=======加======="
echo "${1}+${2}=$(($1+$2))"
echo "=======減======="
echo "${1}-${2}=$(($1-$2))"
echo "=======乘======="
echo "${1}*${2}=$(($1*$2))"
echo "=======除======="
echo "${1}/${2}=$(($1/$2))"
19:編寫/root/bin/wcfile.sh統(tǒng)計(jì)/etc目錄中的目錄的個(gè)數(shù),文件的個(gè)數(shù),并求出/etc/目錄中的目錄和文件個(gè)數(shù)的總和
#!/bin/env bash
dri_name=`find /etc -maxdepth 1 -mindepth 1 -type d |wc -l`
file_name=`find /etc -maxdepth 1 -mindepth 1 -type f |wc -l`
nodri_name=`find /etc -maxdepth 1 -mindepth 1 ! -type d |wc -l`
#結(jié)果輸出
echo "文件夾數(shù)量為:${dri_name}"
echo "普通文件的數(shù)量為:${file_name}"
echo "文件的數(shù)量為:${nodri_name}"
echo "相加結(jié)果數(shù)為: $((${dri_name}+${nodri_name}))"
20:編寫/root/bin/baketc.sh 查找/etc/目錄中超過1天未修改的文件,將其壓縮備份至/bakup目錄。若之前沒有備份過則備份之,若存在的備份文件超過了2分鐘則備份之,否則退出。備份的格式為YYYY-MM-DD-hh-mm-ss.xz
#!/bin/bash
#文件備份函數(shù)
bakup_file()
{
file_name="/bakup/`date "+%F-%H-%M-%S"`"
find /etc -mtime +1 -type f |xargs tar -Jcf "${file_name}.tar.xz "
}
#文件夾測試
[ -a /bakup ] || mkdir /bakup[ -d /bakup ] || { echo "/bakup 非目錄請手動(dòng)處理" ; exit 3 ; }
#沒有備份,則備份。
ls /bakup/*.tar.xz &>/dev/unll || { echo "沒有發(fā)生過任何備份"; bakup_file &>/dev/null ;exit 0 ; }
#文件超過兩分鐘則備份
test=`find /bakup -mindepth 1 -name "*.tar.xz" -mmin -2`
[ "${test}" ] && echo "文件是最新的" || bakup_file &>/dev/null