1. 程式人生 > >Linux基礎練習

Linux基礎練習

linux

在平常接觸Linux時,小編遇到一些簡單典型的基礎題,在這裏就給大家列出來幾個,僅供大家平常的練習。

1.將用戶mage被誤刪除的的家目錄恢復,復制/etc/shadowmage家目錄中。並設置只有用戶wang可以讀取/home/mage/shadow。

rm -rf /home/mage

cp -a /etc/skel/ /home/mage

chown -R mage.mage /home/mage

cp /etc/shadow /home/mage

setfacl -m u:wang:rx /home/mage/

setfacl -m u:wang:r /home/mage/shadow

su - wang

cat /home/mage/shadow

2.下載編譯安裝httpd 2.4最新版本,寫出安裝過程

et apr-1.5.0.tar.bz2 apr-util-1.5.2.tar.bz2 httpd-2.4.10.tar.bz2

yum install pcre-deve

安裝apr

tar -xvf apr-1.5.0.tar.bz2

cd apr-1.5.0/

./configure --prefix=/usr/local/apr

make

make install

安裝apr-util

tar -xvf apr-util-1.5.2.tar.bz2

cd apr-util-1.5.2/

./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr

make

make install

安裝apache

tar -xvf httpd-2.4.10.tar.bz2

cd httpd-2.4.10

./configure --prefix=/usr/local/rjnnhttp

--sysconfdir=/etc/rjnnhttp

--with-pcre

--with-apr=/usr/local/apr

--with-apr-util=/usr/local/apr-util

make

make install

vim /etc/profile.d/rjnn.sh export PATH=$PATH:/usr/local/rjnnhttp

vim /etc/man_db_conf

MANDATORY_MANPATH /usr/local/rjnnhttp/man

links

3.過濾ifconfig命令結果中所有大於0且小於255的三位數。

(1)ifconfig |grep -E ‘\<(([1-9])|([1-9][0-9])|(1[0-9][0-9])|(2[0-4][0-9])|(25[0-4]))\>‘

(2)ifconfig |grep -E ‘\<((1[0-9][0-9])|(2[0-4][0-9])|(25[0-4]))\>‘

4.誤刪除/lib64/libc.so.6系統庫文件,如何恢復之,實驗說明。

##刪除 libc.so.6

1、查找libc.so.6 ldd `which ls`

2、rm -rf/lib64/libc.so.6

##如何恢復

3、重啟計算機,在開機界面的時候按下一次esc鍵,設置為從光盤引導啟動。

##註:此處linux的環境是面vmware 虛擬機中。別的機器光盤啟動方式不同。

4、進入光盤求援模式,6 7的界面選項根據實際情況選擇。

6、復制/lib64/libc.so.6 /mnt/sysimage/lib64

7、關閉selinux

vim /etc/sysconfig/selinux

將SELINUX=enforcing 改成 SELINUX=disabled

8、重啟計算機

5.計算2+4+6+…+96+98+100之和。

echo {2..100..2} | tr " " "+" | bc

6.yum源的配置與使用。創建一個本地yum源

base源指向https://mirrors.aliyun.com/centos/7/os/x86_64/

epel源指向https://mirrors.aliyun.com/epel/7Server/x86_64/

vim /etc/yum.repos.d/CentOS.repo

[base]

name=base

baseurl=https://mirrors.aliyun.com/centos/7/os/x86_64/

gpgcheck=0

enabled=1

[epel]

name=epel

baseurl=https://mirrors.aliyun.com/epel/7Server/x86_64/

gpgcheck=0

enabled=1

7.編寫腳本/root/bin/sysinfo.sh顯示當前主機系統信息,包括主機名,操作系統版本,內核版本,CPU型號,內存大小,硬盤分區。

#!/bin/bash

#

echo "HOSTNAME=`uname -n`"

echo "IPADDR=`ifconfig |grep inet|head -1|tr -s " " |cut -d " " -f3`"

echo "OPERATION=`uname -o`"

echo "RELEASE=`uname -r`"

echo "CPUTYPE=` lscpu |grep "Model name" `"

echo "MEMSIZE=`free`"

echo "DISKINFO=`lsblk`"

8.統計/var/log/httpd/access.log日誌訪問頻繁前十的地址,並從大到小排序。

cat /var/log/httpd/access.log | cut -d" " -f1 | sort | uniq -c | sort -nr | head -10

9.誤刪除rpm包命令,如何恢復之,實驗說明 。

[[email protected] ~]# which rpm

/usr/bin/rpm

[[email protected] ~]# rm -rf /usr/bin/rpm

1、與上題一樣進入救援模式

2、mkdir /mnt/cdrom

3、mount /dev/cdrom /mnt/cdrom

##掛載光盤

4、安裝rpm軟件, rpm -ivh /mnt/cdrom/Packages/rpm-4.11.3-17.el7.x86_64.rpm --force --root=/mnt/sysimage

5、重新啟用計算機

10.編寫腳本/root/bin/sysinfo.sh顯示當前主機系統信息,包括主機名,操作系統版本,內核版本,CPU型號,內存大小,硬盤分區

#!/bin/bash

#

echo "HOSTNAME=`uname -n`"

echo "IPADDR=`ifconfig |grep inet|head -1|tr -s " " |cut -d " " -f3`"

echo "OPERATION=`uname -o`"

echo "RELEASE=`uname -r`"

echo "CPUTYPE=` lscpu |grep "Model name" `"

echo "MEMSIZE=`free`"

echo "DISKINFO=`lsblk`"

11.給root用戶定義別名命令vimnet,相當於vim /etc/sysconfig/network-scripts/ifcfg-ens33,並使root執行history命令時,顯示每個命令執行的具體時間。

echo "alias vimnet=‘vim /etc/sysconfig/network-scripts/ifcfg-eno16777736‘" >> /root/.bashrc

. /root/.bashrc

vimnet

echo ‘HISTTIMEFORMAT="%F %T"‘ >>/root/.bashrc

. /root/.bashrc

history

12.開啟兩個終端,將終端1 中輸入命令的執行結果輸出,並同時輸出到終端2 。

[[email protected] ~]# tty

/dev/pts/0

[[email protected] ~]# date | tee /dev/pts/1

Sat Jun 17 19:23:39 CST 2017

## 另一個終端

[[email protected] ~]# Sat Jun 17 19:23:32 CST 2017

13.編寫/root/bin/excute.sh,實現與用戶交互,判斷用戶給予的參數是否可讀,可寫,可執行

[[email protected] ~]# excute.sh /etc/passwd

Can read

Can write

[[email protected] ~]# excute.sh /bin/ls

Can read

Can write

Can execute

[[email protected] ~]# cat /root/bin/excute.sh

#Author: jin.ren

#QQ: 1922006891

#Version: 3.0

#Date :2017-06-13-19-39-34

#test

[ -r $1 ] && echo "Can read"

[ -w $! ] && echo "Can write"

[ -x $1 ] && echo "Can execute"

14.寫一個腳本,讓它可以傳遞兩個參數後,實現對該參數的加、減、乘、除運算並輸出運算後的值

[[email protected] ~]# vim /root/bin/let.sh

[[email protected] ~]# let.sh

Please input Number133

Please input Number22

33+2=35

33-2=31

33*2=66

33/2=16

[[email protected] ~]# cat /root/bin/let.sh

#Author: jin.ren

#QQ: 1922006891

#Version: 3.0

#Date :2017-06-13-19-44-55

#operation

read -p "Please input Number1" NUM1

read -p "Please input Number2" NUM2

ADD=$[$NUM1+$NUM2]

SUB=$[$NUM1-$NUM2]

RID=$[$NUM1*$NUM2]

DIV=$[$NUM1/$NUM2]

echo "$NUM1+$NUM2=$ADD"

echo "$NUM1-$NUM2=$SUB"

echo "$NUM1*$NUM2=$RID"

echo "$NUM1/$NUM2=$DIV"

15.指出軟鏈接與硬鏈接的異同之處(至少四處)。

硬鏈接:1相於當給文件增加了一個新名在添加鏈接時會增加鏈接數,其inode

點數不會增加

2支持絕對路徑與相對路徑

3不能跨分區來創建鏈接

4硬鏈接不能對目錄來創建

5硬鏈接鏈接到文件被刪除時,依舊可以通過鏈接文件來訪問被刪文件的

數據

軟鏈接:1鏈接到一個文件時,相當於創建了一個新的文件,inode結點會增加

2軟鏈接鏈接到的文件被刪除時,不可以通過鏈接文件來訪問被刪的數據

3軟鏈接支持跨分區鏈接

4軟鏈接支持絕對路徑與相對路徑但要註意的是不要相對於當前的工作目錄

16.取/etc/sysconfig/network-scripts/ifcfg-ens33基名,用兩種方法實現

echo "/etc/sysconfig/network-scripts/ifcfg-ens33" |rev|cut -d"/" -f1|rev

echo "/etc/sysconfig/network-scripts/ifcfg-ens33" |grep -o ‘[^/]*$‘

basename /etc/sysconfig/network-scripts/ifcfg-ens33

17.復制/etc/ssh/sshd_config /tmp/中並更名為sshd_config.bak。/tmp/sshd_config.bak文件中所有以非#號開頭與包含空白字符的行保存至/tmp/sshd_config中。

[[email protected] ~]# cp /etc/sshd_config /tmp/sshd_config.bak

cat /tmp/sshd_config.bak |grep -Ev ‘^#|^[[:space:]]*$‘>/tmp/sshd_config

18.編寫/root/bin/baketc.sh 查找/etc/目錄中超過1天未修改的文件,將其壓縮備份至/bakup目錄。若之前沒有備份過則備份之,若存在的備份文件超過了2分鐘則備份之,否則退出。備份的格式為YYYY-MM-DD-hh-mm-ss.xzY表示年,M表示月,D表示日,h表示時,m表示分,s表示秒)

#!/bin/bash

# Author: Jin.Ren

# Date: 20170611

#

DATE=`date +"%Y-%m-%d-%H-%M-%S"`

WCFILE=`ls /backup | wc -l`

[ -d /backup ] || mkdir /backup

[ $WCFILE -eq 0 ] && find /etc/ -mtime +1 >> /dev/null | xargs tar - Jcvf /backup/$DATE\.tar.xz

FILE=$[`ls -lt /backup/* | cut -d" " -f9 | head -1 |tr -dc [:digit:]`+200]

echo "new file old time add two minute was: $FILE"

NOW=$[`date +"%Y%m%d%H%M%S"`]

echo "NOW system time is: $NOW"

[ $FILE -lt $NOW ] && find /etc/ -mtime +1 | xargs tar -Jcvf /backup/$DATE\.tar.xz

19.對/etc/目錄,分別執行命令,實現以下功能

(1)按從大到小順序顯示文件列表

(2)只顯示隱藏文件

(3)只顯示目錄

(4)按mtime時間顯示文件列表

(5)按atime時間顯示文件列表

1)ls -Sl /etc/

2)ls -d /etc/.*

3)ls -ld /etc/

4)ls -lt /etc

5)ls -lut /etc

20.編寫/root/bin/wcfile.sh統計/etc目錄中的目錄的個數,文件的個數,並求出/etc/目錄中的目錄和文件個數的總和

[[email protected] ~]# wcfile.sh

file number was 3099

directory number was 729

file and directory was 3828

[[email protected] ~]# cat /root/bin/wcfile.sh

#Author: jin.ren

#QQ: 1922006891

#Version: 3.0

#Date :2017-06-17-21-02-52

#wc etc file

FILE=`find /etc/ -not -type d | wc -l`

DIR=`find /etc/ -type d | wc -l`

AND=$[$FILE+$DIR]

echo "file number was $FILE"

echo "directory number was $DIR"

echo "file and directory was $AND"



Linux基礎練習