Linux入门-第四周
1、查找/var目录下不属于root、lp、gdm的所有文件
find命令:实时查找工具,通过指定路径完成文件查找,其特点查找速度略慢,可以精确查找,实时查找,可以只搜索用户具备读取和执行权限的目录
find [OPTION]... [查找路径] [查找条件] [处理动作]
查找路径:指定具体目标路径;用.来表示当前目录,用/来表示系统根目录,默认搜索为当前目录
查找条件:指定的查找标准,可以文件名、大小、类型、权限等标准进行;默认为找出指定路径下的所有文件
-maxdepth level | 最大搜索目录深度,指定目录为第一级 | -type f | 查找类型为普通文件 |
-mindepth level | 最小搜索目录深度 | -type d | 查找类型为目录文件 |
-depth | 先处理目录内的文件,在处理目录 | -type l | 查找类型为符号链接文件 |
-name "filename" | 支持使用glob*。?。[]。[^] | -type s | 查找类型为套接字文件 |
-iname "filename" | 不区分字母大小写 | -type b | 查找类型为块设备文件 |
-user USERNAME | 查找属主为指定用户的文件 | -type c | 查找类型为字符设备文件 |
-group GROUPNAME | 查找属组为指定组的文件 | -type p | 查找类型为管道文件 |
-uidUserID | 查找属主为指定的UID号的文件 | -empty | 查找空文件或目录(find /app -type d -empty) |
-gidGroupID | 查找属组为指定的GID号的文件 | -a | 与 |
-nouser | 查找没有属主的文件 | -o | 或 |
-nogroup | 查找没有属组的文件 | ! | 非 |
处理动作:对符合条件的文件做操作,默认输出至屏幕
-ls | 类似于查到的文件执行ls -l 命令 | -ok COMMAND {} \ | 对查找到的每个文件执行COMMAND指定的命令,在执行命令之前,会要求用户确认 |
-delete | 删除查找到的文件 | -exec COMMAND {} \ | 对查到的每个文件执行COMMAND指定的命令 |
-fls file | 查找到的所有文件的长格式信息保存到指定的文件中 | {} | 用于引用查找到的文件名称自身 |
举例:查找/var目录下不属于root、lp、gdm的所有文件
1 [root@localhost ~]# find /var ! \( -user root -o -user lp -o -user gdm \) 2 /var/tmp/abrt 3 /var/lib/colord 4 /var/lib/colord/icc 5 /var/spool/postfix/defer 6 /var/spool/postfix/deferred ................. 7 /var/spool/postfix/public/flush 8 /var/spool/postfix/public/showq 9 /var/spool/postfix/saved 10 /var/spool/postfix/trace 11 [root@localhost ~]#
2、统计/etc/init.d/functions文件中每个单词的出现次数,并排序(用grep和sed两种方法分别实现)
命令 | 说明 | 命令 | 说明 |
--color=auto | 对匹配到的文本着色显示 | -n | 显示匹配的行号 |
-v | 显示不被pattern匹配到的行 | -c | 统计匹配的行数 |
-i | 忽略字符大小写 | -o | 仅显示匹配到的字符串 |
-q | 静默模式,不输出任何信息 | -w | 匹配整个单词 |
-E | 使用ERE,egrep | -F | 相当于fgrep,不支持正则表达式 |
字符 | 说明 | 字符 | 说明 |
. | 匹配任意单个字符 | [] | 匹配指定范围内的任意单个字符 |
[^] | 匹配指定范围外的任意单个字符 | [:alnum:] | 字母和数字 |
[:alpha:] | 代表任何英文大小写字符 | [:lower:] | 小写字母 |
[:blank:] | 空白字符(空白和制表符) | [:upper:] | 大写字母 |
[:space:] | 水平和垂直的空白字符(比[:blank:]范围广) | [:cntrl:] | 不可打印的控制字符(退格、删除等) |
[:digit:] | 十进制数字 | [:xdigit:] | 十六进制数字 |
[:graph:] | 可打印的非空白字符 | [:print:] | 可打印字符 |
^ | 行首 | $ | 行尾 |
* | *前面字符重复不确定次数 | \+ | \+前面字符重复一次以上不确定次数 |
\? | ?前面字符重复0或1次 | \ | 转义符 |
.* | 任意长度字符 | \{n\} | 前面字符重复n次 |
\{n,\} | 前面字符重复n次以上 | \{m,n\} | 前面字符重复m次以上n次以下 |
1 [root@VM_0_3_centos ~]# egrep -o "\<[[:alpha:]]+\>" /etc/init.d/functions |sort |uniq -c |sort -n 2 1 And 3 1 Apply
............ #内容很多,就不全部显示了 4 33 remaining 5 39 z 6 47 local 7 48 pid 8 49 n 9 53 dev 10 61 return 11 65 echo 12 72 fi 13 77 then 14 83 if 15 [root@VM_0_3_centos ~]#
1 [root@VM_0_3_centos ~]# sed -r 's@[^[:alpha:]]+@\n@g' /etc/init.d/functions |sort |uniq -c |sort -n 2 1 And 3 55 file 4 56 dev 5 61 return 6 72 fi 7 73 echo 8 75 pid 9 77 then 10 83 if 11 1453 12 [root@VM_0_3_centos ~]#
3、利用sed取出ifconfig命令中本机的IPv4地址
1 [root@VM_0_3_centos ~]# ifconfig eth0 |sed -n -e '2s#^.*addr:##g' -e 's# Bcas.*$##gp' 2 172.30.0.3 3 [root@VM_0_3_centos ~]# ip addr 4 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN 5 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 6 inet 127.0.0.1/8 scope host lo 7 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000 8 link/ether 52:54:00:12:cd:5a brd ff:ff:ff:ff:ff:ff 9 inet 172.30.0.3/20 brd 172.30.15.255 scope global eth0 10 [root@VM_0_3_centos ~]#
4、总结yum的配置和使用,包括yum仓库的创建
yum:Yellowdog Update Modifier,rpm的前端程序,可解决软件包相关依赖性,可在多个库之间定位软件包,up2date的替代工具
yum repository: yum repo,存储了众多rpm包,以及包的相关的元数据文件(放置于特定目录repodata下)
文件服务器:
http://
https://
ftp://
file://
yum配置:
yum的配置文件分为两部分:main和repositoy
· man部分定义了全局配置选项,整个yum配置文件应该只有一个main,位于 /etc/yum.conf 中;
· repository 部分定义了每个源/服务器的具体配置,可以有一到多个。位于 /etc/yum.repo.d 目录下的各个文件中
仓库指向的定义:
[repositoryID]
name=Some name for this repository
baseurl=url://path/to/repository/
enabled={1|0}
gpgcheck={1|0}
gpgkey=URL
enablegroups={1|0}
failovermethod={roundrobin|priority}
roundrobin:意为随机挑选,默认值
priority:按顺序访问
cost= 默认为1000
命令 | 说明 | 命令 | 说明 |
yum repolist | 显示仓库列表 | yum list | 显示程序包 |
yum install package1 | 安装程序包package1 | yum update package1 | 升级程序包package1 |
yum remove package | 卸载程序包 | yum downgrade package1 | 降级程序包package1 |
yum info [...] |
查看程序包信息 | yum clean | 清理本地缓存 |
yum search keyword | 以指定的关键字搜索程序包 | yum makecache | 构建缓存 |
--disablerepo=repoidglob | 临时禁用此处指定的repo | --enablerepo=repoidglob | 临时启用此处指定的repo |
创建本地yum仓库(ISO)
首先挂载CentOS 7光盘ISO
[root@localhost ~]# mkdir /mnt/cdrom [root@localhost ~]# ls -l /dev/cdrom lrwxrwxrwx. 1 root root 3 4月 13 21:03 /dev/cdrom -> sr0 [root@localhost ~]# mount /dev/sr0 /mnt/cdrom/ mount: /dev/sr0 写保护,将以只读方式挂载 [root@localhost ~]# df -h 文件系统 容量 已用 可用 已用% 挂载点 /dev/mapper/centos-root 17G 3.9G 14G 23% / devtmpfs 894M 0 894M 0% /dev tmpfs 910M 0 910M 0% /dev/shm tmpfs 910M 11M 900M 2% /run tmpfs 910M 0 910M 0% /sys/fs/cgroup /dev/sdb 20G 45M 19G 1% /data /dev/sda1 1014M 232M 783M 23% /boot tmpfs 182M 8.0K 182M 1% /run/user/42 tmpfs 182M 36K 182M 1% /run/user/0 /dev/sr0 11G 11G 0 100% /mnt/cdrom
将Packages和repodata复制到/data/yum/下
cp -rv /mnt/cdrom/reoidata /data/yum
cp -rv /mnt/cdrom/Packages /data/yum
安装deltarpm、python-deltarpm、createrepo
1 [root@localhost Packages]# rpm -ivh deltarpm-3.6-3.el7.x86_64.rpm 2 警告:deltarpm-3.6-3.el7.x86_64.rpm: 头V3 RSA/SHA256 Signature, 密钥 ID f4a80eb5: NOKEY 3 准备中... ################################# [100%] 4 正在升级/安装... 5 1:deltarpm-3.6-3.el7 ################################# [100%] 6 [root@localhost Packages]# rpm -ivh python-deltarpm-3.6-3.el7.x86_64.rpm 7 警告:python-deltarpm-3.6-3.el7.x86_64.rpm: 头V3 RSA/SHA256 Signature, 密钥 ID f4a80eb5: NOKEY 8 准备中... ################################# [100%] 9 正在升级/安装... 10 1:python-deltarpm-3.6-3.el7 ################################# [100%] 11 [root@localhost Packages]# rpm -ivh createrepo-0.9.9-28.el7.noarch.rpm 12 警告:createrepo-0.9.9-28.el7.noarch.rpm: 头V3 RSA/SHA256 Signature, 密钥 ID f4a80eb5: NOKEY 13 准备中... ################################# [100%] 14 正在升级/安装... 15 1:createrepo-0.9.9-28.el7 ################################# [100%]
在Packages目录使用createrepo生成yum仓库依赖关系
1 [root@localhost Packages]# createrepo -g /mnt/cdrom/repodata/aced7d22b338fdf7c0a71ffcf32614e058f4422c42476d1f4b9e9364d567702f-c7-x86_64-comps.xml /data/yum/Packages/ 2 Spawning worker 0 with 5010 pkgs 3 Spawning worker 1 with 5009 pkgs 4 Workers Finished 5 Saving Primary metadata 6 Saving file lists metadata 7 Saving other metadata 8 Generating sqlite DBs 9 Sqlite DBs complete 10 [root@localhost Packages]#
编辑yum仓库配置文件
进入配置文件目录,先备份(论备份重要性)
1 [root@localhost Packages]# cd /etc/yum.repos.d/ 2 [root@localhost yum.repos.d]# cp -rv CentOS-Media.repo CentOS-Media.repo.bak 3 "CentOS-Media.repo" -> "CentOS-Media.repo.bak" 4 [root@localhost yum.repos.d]# ll 5 总用量 12 6 -rw-r--r--. 1 root root 148 4月 13 23:25 CentOS-Media.repo 7 -rw-r--r--. 1 root root 148 4月 13 23:25 CentOS-Media.repo.bak 8 [root@localhost yum.repos.d]# cd /data/yum/ 9 [root@localhost yum]# cp -a /mnt/cdrom/ /data/yum/ 10 [root@localhost yum]#ll 11 总用量 4 12 drwxrwxr-x. 8 root root 4096 11月 26 00:00 cdrom 13 [root@localhost yum]# df -Th 14 文件系统 类型 容量 已用 可用 已用% 挂载点 15 /dev/mapper/centos-root xfs 17G 3.9G 14G 23% / 16 devtmpfs devtmpfs 894M 0 894M 0% /dev 17 tmpfs tmpfs 910M 0 910M 0% /dev/shm 18 tmpfs tmpfs 910M 11M 900M 2% /run 19 tmpfs tmpfs 910M 0 910M 0% /sys/fs/cgroup 20 /dev/sdb ext4 20G 11G 8.5G 55% /data 21 /dev/sda1 xfs 1014M 232M 783M 23% /boot 22 tmpfs tmpfs 182M 8.0K 182M 1% /run/user/42 23 tmpfs tmpfs 182M 48K 182M 1% /run/user/0 24 /dev/sr0 iso9660 11G 11G 0 100% /mnt/cdrom 25 [root@localhost yum]# cd /etc/yum.repos.d/ 26 [root@localhost yum.repos.d]# vim CentOS-Media.repo 27 [root@localhost yum.repos.d]# cat CentOS-Media.repo 28 [c7-media] 29 name=CentOS-$releasever - Media 30 baseurl=file:///data/yum/cdrom 31 gpgcheck=0 32 enabled=1 33 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7 34 35 [root@localhost yum.repos.d]# yum clean all 36 已加载插件:fastestmirror, langpacks 37 正在清理软件源: c7-media 38 Cleaning up list of fastest mirrors 39 Other repos take up 95 M of disk space (use --verbose for details) 40 [root@localhost yum.repos.d]# yum makecache 41 已加载插件:fastestmirror, langpacks 42 Determining fastest mirrors 43 c7-media | 3.6 kB 00:00:00 44 (1/4): c7-media/group_gz | 166 kB 00:00:00 45 (2/4): c7-media/primary_db | 6.0 MB 00:00:00 46 (3/4): c7-media/other_db | 2.6 MB 00:00:00 47 (4/4): c7-media/filelists_db | 7.1 MB 00:00:00 48 元数据缓存已建立 49 [root@localhost yum.repos.d]# 50 [root@localhost yum.repos.d]# yum install corosync 51 已加载插件:fastestmirror, langpacks 52 Loading mirror speeds from cached hostfile 53 正在解决依赖关系 54 --> 正在检查事务 55 ---> 软件包 corosync.x86_64.0.2.4.3-4.el7 将被 安装 56 --> 正在处理依赖关系 corosynclib = 2.4.3-4.el7,它被软件包 corosync-2.4.3-4.el7.x86_64 需要 57 --> 正在处理依赖关系 libvotequorum.so.8(COROSYNC_VOTEQUORUM_1.0)(64bit),它被软件包 corosync-2.4.3-4.el7.x86_64 需要 58 --> 正在处理依赖关系 libquorum.so.5(COROSYNC_QUORUM_1.0)(64bit),它被软件包 corosync-2.4.3-4.el7.x86_64 需要 59 --> 正在处理依赖关系 libcpg.so.4(COROSYNC_CPG_1.0)(64bit),它被软件包 corosync-2.4.3-4.el7.x86_64 需要 60 --> 正在处理依赖关系 libcmap.so.4(COROSYNC_CMAP_1.0)(64bit),它被软件包 corosync-2.4.3-4.el7.x86_64 需要 61 --> 正在处理依赖关系 libcfg.so.6(COROSYNC_CFG_0.82)(64bit),它被软件包 corosync-2.4.3-4.el7.x86_64 需要 62 --> 正在处理依赖关系 libvotequorum.so.8()(64bit),它被软件包 corosync-2.4.3-4.el7.x86_64 需要 63 --> 正在处理依赖关系 libtotem_pg.so.5()(64bit),它被软件包 corosync-2.4.3-4.el7.x86_64 需要 64 --> 正在处理依赖关系 libquorum.so.5()(64bit),它被软件包 corosync-2.4.3-4.el7.x86_64 需要 65 --> 正在处理依赖关系 libqb.so.0()(64bit),它被软件包 corosync-2.4.3-4.el7.x86_64 需要 66 --> 正在处理依赖关系 libcpg.so.4()(64bit),它被软件包 corosync-2.4.3-4.el7.x86_64 需要 67 --> 正在处理依赖关系 libcorosync_common.so.4()(64bit),它被软件包 corosync-2.4.3-4.el7.x86_64 需要 68 --> 正在处理依赖关系 libcmap.so.4()(64bit),它被软件包 corosync-2.4.3-4.el7.x86_64 需要 69 --> 正在处理依赖关系 libcfg.so.6()(64bit),它被软件包 corosync-2.4.3-4.el7.x86_64 需要 70 --> 正在检查事务 71 ---> 软件包 corosynclib.x86_64.0.2.4.3-4.el7 将被 安装 72 ---> 软件包 libqb.x86_64.0.1.0.1-7.el7 将被 安装 73 --> 解决依赖关系完成 74 75 依赖关系解决 76 77 ======================================================================================================================================== 78 Package 架构 版本 源 大小 79 ======================================================================================================================================== 80 正在安装: 81 corosync x86_64 2.4.3-4.el7 c7-media 220 k 82 为依赖而安装: 83 corosynclib x86_64 2.4.3-4.el7 c7-media 132 k 84 libqb x86_64 1.0.1-7.el7 c7-media 96 k 85 86 事务概要 87 ======================================================================================================================================== 88 安装 1 软件包 (+2 依赖软件包) 89 90 总下载量:447 k 91 安装大小:941 k 92 Is this ok [y/d/N]: y 93 Downloading packages: 94 ---------------------------------------------------------------------------------------------------------------------------------------- 95 总计 88 MB/s | 447 kB 00:00:00 96 Running transaction check 97 Running transaction test 98 Transaction test succeeded 99 Running transaction 100 正在安装 : libqb-1.0.1-7.el7.x86_64 1/3 101 正在安装 : corosync-2.4.3-4.el7.x86_64 2/3 102 正在安装 : corosynclib-2.4.3-4.el7.x86_64 3/3 103 验证中 : corosynclib-2.4.3-4.el7.x86_64 1/3 104 验证中 : corosync-2.4.3-4.el7.x86_64 2/3 105 验证中 : libqb-1.0.1-7.el7.x86_64 3/3 106 107 已安装: 108 corosync.x86_64 0:2.4.3-4.el7 109 110 作为依赖被安装: 111 corosynclib.x86_64 0:2.4.3-4.el7 libqb.x86_64 0:1.0.1-7.el7 112 113 完毕! 114 [root@localhost yum.repos.d]#
软件安装成功,无报错。yum配置成功
5、编写系统初始化脚本reset.sh。包括别名,提示符颜色,yum仓库配置文件
1 [root@localhost data]# bash resert.sh 2 [root@localhost data]# cat resert.sh 3 #!/bin/bash 4 # 5 # 初始化系统脚本 6 echo "alias net='cd /etc/sysconfig/network-scripts/'" >> /root/.bashrc 7 echo "PS1='\[\e[31m\][\u\]\e[0m\]\[\e[1;33m\]@\[\e[0m\]\e[36m\]\W\t\]]\e[0m\]'" >>/etc/profile.d/env.sh 8 touch /etc/yum.repos.d/base.repo 9 echo "[base]">>/etc/yum.repos.d/base.repo 10 echo "name=base">>/etc/yum.repos.d/base.repo 11 echo "baseurl=https://mirrors.aliyun.com/centos/$releasever/os/x86_64/">>/etc/yum.repos.d/base.repo 12 echo "gpgcheck=0">>/etc/yum.repos.d/base.repo 13 [root@localhost data]# 14 [root@localhost data]# reboot 15 Connection closing...Socket close. 16 17 Connection closed by foreign host. 18 19 Disconnected from remote host(Centos 7-CN-ZH root - 副本) at 00:49:00. 20 21 Type `help' to learn how to use Xshell prompt. 22 [C:\~]$ 23 24 Connecting to 192.168.47.128:22... 25 Connection established. 26 To escape to local shell, press 'Ctrl+Alt+]'. 27 28 Last login: Sat Apr 13 23:04:24 2019 from 192.168.47.1 29 [root@~00:49:54]
6、安装tree,ftp,lftp,telnet等包
1 [root@yum.repos.d01:04:09]yum -y install tree ftp lftp telnet
7、在CentOS7上编译安装apache2.4源码包,并启动此服务
安装相关依赖包
1 yum -y install gcc gcc++ zlib zlib-devel
下载Apache需要的源码包
1 [root@localhost ~]#wget http://archive.apache.org/dist/apr/apr-1.7.0.tar.gz 2 [root@localhost ~]#wget http://archive.apache.org/dist/apr/apr-util-1.6.1.tar.gz 3 [root@localhost ~]#wget https://newcontinuum.dl.sourceforge.net/project/pcre/pcre/8.43/pcre-8.43.tar.gz 4 [root@localhost ~]#wget http://mirrors.tuna.tsinghua.edu.cn/apache//httpd/httpd-2.4.39.tar.gz
将这些源码包解压
1 [root@Centos7 ~]# tar -xf apr-1.7.0.tar.gz 2 [root@Centos7 ~]# tar -xf apr-util-1.6.1.tar.gz 3 [root@Centos7 ~]# tar -xf pcre-8.43.tar.gz 4 [root@Centos7 ~]# tar -xf httpd-2.4.39.tar.gz 5 [root@Centos7 ~]#
安装并编译这些软件
1 [root@Centos7 ~]# cd apr-1.7.0/ #进入解压的软件包目录里面 2 [root@Centos7 apr-1.7.0]# ./configure --prefix=/usr/local/apr/ && make && make install #编译安装 3 [root@Centos7 apr-1.7.0]# cd /root/apr-util-1.6.1/ #进入解压的软件包目录里面 4 [root@Centos7 apr-util-1.6.1]# ./configure --prefix=/usr/local/apr-util/ --with-apr=/usr/local/apr/ && make && make install #编译安装 5 [root@Centos7 apr-util-1.6.1]# cd /root/pcre-8.43/ #进入解压的软件包目录里面 6 [root@Centos7 pcre-8.43]# ./configure --prefix=/usr/local/pcre/ && make && make install #编译安装 7 [root@Centos7 pcre-8.43]# cd /root/httpd-2.4.39/ #进入解压的软件包目录里面 8 [root@Centos7 httpd-2.4.39]# ./configure --prefix=/usr/local/apache24/ --with-apr=/usr/local/apr/ --with-apr-util=/usr/local/apr-util/ --with-pcre=/usr/local/pcre/ && make && make install #编译安装
启动Apache
1 [root@localhost httpd-2.4.39]# cd /usr/local/apache24/bin/ 2 [root@localhost bin]# ./apachectl start 3 AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using localhost.localdomain. Set the 'ServerName' directive globally to suppress this message 4 [root@localhost bin]# vim /usr/local/apache24/conf/httpd.conf #修改httpd.conf文件,在#ServerName www.example.com:80下面添加一行ServerName localhost:80 重新启动apache服务即可 5 [root@localhost bin]# ./apachectl start 6 httpd (pid 44842) already running 7 [root@localhost bin]#
关闭防火墙, 添加Apache自启动
1 [root@Centos7 bin]# systemctl stop firewalld.service 2 [root@Centos7 bin]# systemctl disable firewalld.service 3 Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service. 4 Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service. 5 [root@Centos7 bin]# cp /usr/local/apache24/bin/apachectl /etc/rc.d/init.d/httpd 6 [root@Centos7 bin]# vim /etc/rc.d/init.d/httpd 7 8 #!/bin/sh 9 #chkconfig: 2345 70 70 #chkconfig: 2345 70 70中的2345是指脚本的运行级别,234都是文本界面,5是图形界面;70是指脚本将来的启动顺序号 10 #description: apache 11 12 # Licensed to the Apache Software Foundation (ASF) under one or more 13 # contributor license agreements. See the NOTICE file distributed with 14 # this work for additional information regarding copyright ownership. 15 # The ASF licenses this file to You under the Apache License, Version 2.0 16 # (the "License"); you may not use this file except in compliance with 17 # the License. You may obtain a copy of the License at 18 # 19 # http://www.apache.org/licenses/LICENSE-2.0 20 #
把Apache添加到系统服务并设置自启动
1 [root@Centos7 bin]# chkconfig --add httpd 2 [root@Centos7 bin]# chkconfig httpd on 3 [root@Centos7 bin]#
配置文件路径也就是安装Apache时–prefix=xxxx所指定的目录(见编译安装时标红的那些路径)
1 [root@Centos7 bin]# cat /usr/local/apache24/conf/httpd.conf 2 # 3 # This is the main Apache HTTP server configuration file. It contains the 4 # configuration directives that give the server its instructions. 5 # See <URL:http://httpd.apache.org/docs/2.4/> for detailed information. 6 # In particular, see 7 # <URL:http://httpd.apache.org/docs/2.4/mod/directives.html> 8 # for a discussion of each configuration directive.
至此,Apache配置编译安装和设置自启动已全部完成。