第1章 练习题

1.1 每天晚上 12 点,打包站点目录/var/www/html 备份到/data 目录下(最好每次备份按时间生成不同的备份包)

1.1.1 测试命令

  1. [root@znix ~]# cd / && tar zcf /data/www_`date +%F`.tar.gz var/www/html

1.1.2 写入脚本中

  1. [root@znix /]# cat /server/scripts/www.sh
  2. cd / && tar zcf /data/www_`date +%F`.tar.gz var/www/html

1.1.3 测试脚本

  1. [root@znix ~]# sh /server/scripts/www.sh

1.1.4 写入定时任务

  1. [root@znix /]# crontab -l |tail -2
  2. #### backup /var/www/html dir
  3. 00 00 * * * /bin/sh /server/scripts/www.sh >/dev/null 2>&1

1.1.5 检查执行结果

  1. [root@znix ~]# ll /data/
  2. total 16
  3. -rw-r--r-- 1 root root 154 Sep 11 09:44 www_2017-09-11.tar.gz

1.2 每周 六、日 上午 9:00和下午 17: 00 上班(执行程序/server/script/clsn.sh代替学习)。

  1. 00 9,17 * * 0,6 /bin/sh /server/scripts/clsn.sh >/dev/null 2>&1

0表示周日
6表示周六

1.3 描述下列路径的内容是做什么的。

  1. /etc/sysctl.conf 系统内核的配置文件
  2. /etc/rc.local 开机自启动
  3. /etc/hosts ip与域名的对应关系 ,解析主机名
  4. /etc/fstab 开机自动挂载
  5. /var/log/secure 用户登陆信息,主要查看其中的Failed

1.4 请说出下列 grep 正则表达式的含义

^ 以…开头的行
$ 以…结尾的行
.(点号) 任意一个字符
\ 在转义字符 \n \t
* 前一个字符练习出现0次或1次以上
{n,m} 前一个字符连续出现,至少n次,最多m
[^t] 取不包含t的
^[^t] 以不是t的开头

1.5 排除文件中的空行和空格

1.5.1 文件的内容

  1. [root@znix ~]# cat -A mun.txt
  2. znix1$
  3. znix2$
  4. znix3$
  5. $
  6. znix4$
  7. $
  8. znix5$
  9. $
  10. znix6$

1.5.2 egrep方法

找出空行 -v参数排除

  1. [root@znix ~]# egrep -n "^ *$" mun.txt
  2. 4:
  3. 6:
  4. 8:
  5. 10:
  6. 14:
  7. [root@znix ~]# egrep -n "^|+|+" mun.txt
  8. 4:
  9. 6:
  10. 8:
  11. 10:
  12. 14:

1.5.3 awk方法

  1. [root@znix ~]# awk '!/^[ ]*$/' mun.txt
  2. znix1
  3. znix2
  4. znix3
  5. znix4
  6. znix5
  7. znix6

1.6 把passwd.txt 第一列取出来

1.6.1 文件内容

  1. [root@znix ~]# cat passwd.txt
  2. root:x:0:0:root:/root:/bin/bash
  3. bin:x:1:1:bin:/bin:/sbin/nologin
  4. daemon:x:2:2:daemon:/sbin:/sbin/nologin
  5. adm:x:3:4:adm:/var/adm:/sbin/nologin
  6. lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
  7. sync:x:5:0:sync:/sbin:/bin/sync

1.6.2 排除思想

  1. [root@znix ~]# egrep "^[^:]+" passwd.txt -o
  2. root
  3. bin
  4. ……

1.6.3 sed方法

  1. [root@znix ~]# sed -r 's#(^.*)(:x.*:)(.*)#\3\2\1#g' passwd.txt
  2. /bin/bash:x:0:0:root:/root:root
  3. /sbin/nologin:x:1:1:bin:/bin:bin
  4. ……

排除不是以 :开头的行

  1. [root@znix ~]# sed -r 's#(^[^:]+)(.*:)(/.*$)#\3\2\1#' passwd.txt
  2. /bin/bash:x:0:0:root:/root:root
  3. /sbin/nologin:x:1:1:bin:/bin:bin
  4. ……

1.6.4 awk方法

awk中的变量:
-vOFS=”:”
OFS 的内容就是 , 的内容
awk在显示每一列内容的时候,每一列之间的分隔符
-v 修改和创建awk可以使用的变量

  1. [root@znix ~]# awk -F: -vOFS=":" '{print NF,NF,2,3,3,4,5,5,6,$1}' passwd.txt
  2. /bin/bash:x:0:0:root:/root:root
  3. /sbin/nologin:x:1:1:bin:/bin:bin
  4. ……

1.7 vi/vim命令、快捷键

含义 命令
退出保存 :wq
退出并强制保存,!为强制的意思 :wq!
强制退出,不保存 :q!
另存为 :q /tmp/**
光标移动到文件的最后一行 G
光标移动到文件的第一行 gg
光标移动到文件的100行 100gg 100G :100
从光标所在位置将光标移动到当前行的开头 0 ^
从光标所在位置将光标移动到当前行的结尾 $
删除当前行的内容 dd
删除当前行到文件的最后一行的内容 dG
删除当前行到文件的第一行的内容 dgg
粘贴 p
粘贴10次 10p
复制 yy
取消上一次的动作 u
删除一行 dd
/ 搜索内容 继续向下搜索 n
继续向上搜索 N
向上搜索 ?
取消对找到的内容的高亮显示 :noh

1.7.1 编辑services定位到第100行把这一行复制到文件的最后一行粘贴10次。

  1. 100gg
  2. yy
  3. G
  4. 10p

1.8 授权 clsn 目录及其子目录 755 的权限。

  1. chmod -R 755 clsn

1.9 把 clsn 目录及其子目录的属主改为 clsn,组改为 root。

  1. chown clsn.lodboy clsn.txt

1.9.1 修改时可能发生的错误

  1. [root@znix ~]# id clsn
  2. uid=500(clsn) gid=501(incahome) groups=501(incahome)
  3. [root@znix ~]# chown clsn.clsn clsn-new.txt
  4. [root@ znix ~]# chown clsn.clsn num.txt
  5. chown: invalid user: `clsn.clsn'

检查clsn用户是否存在,检查clsn这个用户组是否存在

1.10 描述下 umask 的作用.

umask管理着linux默认的权限

实例1-1 当umask为021时 file 权限为644 666-021+001=644 dir 权限为 756 777-021=756

1.11 每天打包备份 /etc/rc.local /etc/hosts /etc/services 到 /backup目录。

1.11.1 测试命令

  1. root@znix ~]# cd / && tar zcf /backup/file`date +%F`.tar.gz etc/rc.local etc/hosts etc/services
  2. oot@znix /]# ll /backup/file2017-09-11.tar.gz
  3. -rw-r--r-- 1 root root 127455 Sep 11 15:41 /backup/file2017-09-11.tar.gz

1.11.2 写入脚本

  1. [root@znix /]# cat /server/scripts/file.sh
  2. cd / && tar zcf /backup/file`date +%F`.tar.gz etc/rc.local etc/hosts etc/services

1.11.3 测试脚本

  1. [root@znix /]# sh /server/scripts/file.sh
  2. [root@znix /]# ll /backup/file2017-09-11.tar.gz
  3. -rw-r--r-- 1 root root 127455 Sep 11 15:44 /backup/file2017-09-11.t
  4. [root@znix /]# cat /server/scripts/file.sh

1.11.4 写入定时任务

  1. ### beifen zhongyaowenjan
  2. 00 00 * * * /bin/sh /server/scripts/file.sh >/dev/null 2>&1

1.11.5 测试定时任务

  1. [root@znix ~]# date -s '23:59:29'
  2. Mon Sep 11 23:59:29 CST 2017
  3. [root@znix ~]# ll /backup/file2017-09-1*
  4. -rw-r--r-- 1 root root 127455 Sep 11 15:44 /backup/file2017-09-11.tar.gz
  5. -rw-r--r-- 1 root root 127455 Sep 12 2017 /backup/file2017-09-12.tar.gz

第2章 回顾课程

2.1 定时任务

每隔 2 个小时将/etc/services 文件打包备份到/tmp 下(最好每次备份成不同的备份包)

2.1.1 测试命令

  1. [root@znix ~]# cd / && /bin/tar zcf /tmp/ser_`date +%F_%H`.tar.gz etc/services

2.1.2 放入脚本中

  1. [root@znix ~]# cat /server/scripts/ser.sh
  2. cd / && /bin/tar zcf /tmp/ser_`date +%F_%H`.tar.gz etc/services

2.1.3 测试脚本

  1. [root@znix ~]# sh /server/scripts/ser.sh

2.1.4 写入定时任务

  1. [root@znix ~]# crontab -l |tail -2
  2. #backup /etc/services
  3. 00 */2 * * * /bin/sh /server/scripts/bak-ser.sh >/dev/null 2>&1

2.1.5 检查定时任务是否成功

  1. 1)是否打包成功,看看文件里面是否有追加的信息
  2. 2)查看定时任务日志 /var/log/cron

2.2 无法连接linux

2.2.1 道路是否通畅

  1. ping ip地址

实例2-1 无法ping通的解决办法:
服务器的ip地址是否正确
服务器网卡是否启动,即ONBOOT是否为yes
系统网卡的配置
实例2-2 VMware相关的:
vmware-5个服务是否启动
vmware配置-网卡是否连接
查看你vmware网卡的vmnet8 是否已经启动

2.2.2 是否有人劫财劫色

  1. 查看 iptables selinux是否关闭

2.2.3 是否有人提供服务

实例2-3 看22端口是否开启

  1. 方法一: telnet 10.0.0.200 22
  2. 方法二: ss -lntup |grep 22

实例2-4 进程是否在运行

  1. ps -ef |grep sshd

2.3 linux无法上网怎么办

2.3.1 ping 域名

域名无法ping 通

  1. [root@znix ~]# ping centos.nmtui.com
  2. ping: unknown host centos.nmtui.com

2.3.2 ping 外网ip

可以ping 通

  1. [root@znix ~]# ping 123.206.66.12
  2. PING 123.206.66.149 (123.206.66.12) 56(84) bytes of data.
  3. 64 bytes from 123.206.66.149: icmp_seq=1 ttl=128 time=63.1 ms
  4. 64 bytes from 123.206.66.149: icmp_seq=2 ttl=128 time=60.5 ms

2.3.3 检查dns配置文件

  1. [root@znix ~]# cat /etc/resolv.conf

2.3.4 修改配置文件

修改完成重启网卡,生效

  1. [root@znix ~]# service network restart
  2. Shutting down interface eth0: [ OK ]
  3. Shutting down loopback interface: [ OK ]
  4. Bringing up loopback interface: [ OK ]
  5. Bringing up interface eth0: Determining if ip address 10.0.0.201 is already in use for device eth0...
  6. [ OK ]

2.4 检查一个软件是否按照 rpm 相关

2.4.1 查询某个软件包是否安装

  1. [root@znix ~]# rpm -qa tree
  2. tree-1.5.3-3.el6.x86_64

2.4.2 查询软件包里面的内容

  1. [root@znix ~]# rpm -ql tree
  2. /usr/bin/tree
  3. /usr/share/doc/tree-1.5.3
  4. /usr/share/doc/tree-1.5.3/LICENSE
  5. /usr/share/doc/tree-1.5.3/README
  6. /usr/share/man/man1/tree.1.gz

2.4.3 查询某个命令属于哪个软件包

查询的时候要使用绝对路径

  1. [root@znix ~]# rpm -qf `which crond`
  2. cronie-1.4.4-16.el6_8.2.x86_64