目录
linux启动过程
内核的引导
运行init
系统初始化
建立终端
用户登录系统
linux目录结构
/bin 目录存放普通用户使用的命令
/boot 存放启动linux时使用的核心文件,包括连接文件以及镜像文件
/dev 存放的是linux的外部设备
/etc 存放所有系统管理管理所需要的配置文件和子目录
/home 用户的主目录,记录创建用户的家目录
/lib 存放着系统最基本的动态连接共享库,所有应用程序都需要用的这个共享库
/media linux系统自动识别一些设备,U盘,光驱,识别到后会自动挂载到该目录下
/mnt 用户临时挂载文件的系统,将光驱挂载到/mnt/上,就能进入到该目录查看到光驱里面的内容
/proc
一种伪文件系统(也即虚拟文件系统),存储的是当前内核运行状态的一系列特殊文件,这个目录是一个虚拟的目录,它是系统内存的映射,我们可以通过直接访问这个目录来获取系统信息。这个目录的内容不在硬盘上而是在内存里
/root 该目录为系统管理员,也称作超级权限者的用户主目录。
/sbin 存放系统管理员使用的命令
/usr/bin 系统用户使用的应用程序
/usr/sbin 超级用户使用的比较高级的管理程序和系统守护程序。
/var 存放这各种系统日志文件
tree命令
tree -L 2 / 展示深度2层树结构目录
ls命令
ls -atl
-l 显示文件的属性与权限等数据
-t 以时间排序,日期最近的显示前面
-a 显示全部文件,包括隐藏文件
-i 显示inode
-h 已KB的形式显示文件大小
文件类型
当为 d 则是目录
当为 - 则是文件
若是 l 则表示为链接文档(link file)
若是 b 则表示为装置文件里面的可供储存的接口设备(可随机存取装置)
若是 c 则表示为装置文件里面的串行端口设备,例如键盘、鼠标(一次性读取装置)。
若是 s 为socket文件
which
which ls 查找文件,显示命令路径
别名alias
alias 显示所有的别名
alias 111='ls -lha' 设置一个别名
unalias 111 取消别名
绝对路径,相对路径
从根开始的都是绝对路径
相对路径是从你当前目录的路径,不是根开始的
cd命令
cd - 进入到上一次所在的目录
cd 回到用户的家目录
cd ~ 回到root目录
cd .. 进入到上一层目录
目录创建和删除
mkdir /tmp/111 创建一个111的目录
mkdir -p /tmp/111/222 创建联级个目录
rm -rf /tmp/111 删除目录
-f 强制删除不在询问
-r 删除目录
环境变量PATH
vi /etc/profile 添加环境变量
source /etc/profile 刷新生效
cp命令
cp /etc/passwd /tmp/1.txt 拷贝文件
cp -r /tmp/pear/ /tmp/222 拷贝目录
mv命令
mv 1.txt 2.txt 文件改名
mv 1.txt opt/ 移动文件
文档查看
cat /etc/passwd 查看文件内容
tac /etc/passwd 倒序查看文件内容
cat -n /etc/passwd 显示行号查看文件内容
more /etc/passwd 翻页显示文件内容 ctrl+b 表示往前翻页查看
less anaconda-ks.cfg ctrl+b 表示往前翻页查看 ctrl+f 往下翻页查看 /eve 搜索字符串 ?eve 从后往前查找字符串
tail -f /etc/passwd 动态查看文件内容 不加参数,默认只显示最后十行内容
tail -n 2 /etc/passwd 只查看最后两行内容
head /etc/passwd 默认查看前十行内容
head -n 2 /etc/passwd 查看前两行内容
文件和目录权限chmod
rwx r可读,w可写,x可执行
r=4,w=2,x=1
rw-r--r-- rw-所有者权限 r--所属组权限 r--其他用户权限
chmod 700 1.txt 修改文件权限
chmod -R 700 /home/ 递归修改目录下的所有文件权限
chmod u=rwx,g=r,o=r anaconda-ks.cfg 修改文件权限
chmod a+x anaconda-ks.cfg 增加x执行权限
更改所有者和所属组chown
chown wu anaconda-ks.cfg 更改所属用户
chown :wu anaconda-ks.cfg 更改所属组
chgrp root anaconda-ks.cfg 更改所属组
chown -R wu:root /etc/ 递归修改所有文件的所属用户和所属
umask
umask 命令用来设置限制新建文件权限的掩码
rwx rwx rwx - 002 = (rwx rwx rwx) - ( — — -w-) = rwx rwx r-x
777 - 022 =755
666 - 022 =644
隐藏权限lsattr chattr
chattr +i 1.txt 增加隐藏权限使文件无法修改
chattr -i 1.txt 取消隐藏权限
chattr +a 1.txt 只能追加内容
chattr +i 111/ 增加目录的隐藏权限
lsattr 1.txt 查看隐藏权限
lsattr -d 111/ 查看目录隐藏权限
lsattr -R 111/ 递归查看目录下面所有文件的隐藏权限
lsattr -a 111/ 包括隐藏文件也显示
特殊权限set_uid
临时让用户拥有命令权限
chmod u+s /usr/bin/ls 给用户增加ls 命令权限
chmod u-s /usr/bin/ls 去掉ls 命令权限
特殊权限set_gid
chmod g+s /usr/bin/ls 给所属组用户增加ls 命令权限
chmod g-s /usr/bin/ls 去掉ls 命令权限
特殊权限stick_bit
stick_bit 防止别人删除自己的文件
chmod o+t /tmp/ 增加权限
chmod o-t /tmp/ 去掉权限
特殊权限stick_bit
stick_bit 防止别人删除自己的文件
chmod o+t /tmp/ 增加权限
chmod o-t /tmp/ 去掉权限
软链接文件
相当于快捷方式
某些特定的程序需要指定路径文件,直接做一个软连接方式节省空间
ln -s 1.txt /tmp/2.txt 把1.txt文件软连接到/tmp/ 并且文件名称改成2.txt
ln -s /root/123/ /tmp/ 软连接目录,尽量使用绝对路径
cp 1.txt /tmp/ && rm -rf 1.txt && ln -s /tmp/1.txt /root/ 如果遇到所占分区空间不够,可以做一下软连接使用
硬链接文件
硬链接不能做目录
ln 1.txt 1_txt 创建硬链接,inode值一样,可以防止被删除
find命令
-mtime 创建时间,最近改动(文件权限) -ctime 更改文件内容 -atime 最近访问
find /etc/ -name -type f "sshd" 搜索sshd的文件
stat 1.txt 显示文件的详细信息,查看三个time信息
find / -type f -mtime +1 一天以外发生更改的文件
find / -type f -mtime -1 一天以内发生更改的文件
find / -type f -mtime -1 -name "*.conf" 查找一天以内发生改动并且以.conf结尾的文件
find / -type f -o -mtime -1 -o -name " *.conf" 查找一天以内发生改动或者以.conf结尾的文件 -o是或者的意思
文件名后缀
linux下面文件的后缀名不能代表这个文件的格式
用户配置文件和密码配置文件
cat /etc/passwd 查看用用户信息文件
cat /etc/shadow 记录用户的密码文件
用户组管理
cat /etc/group 用户组文件
groupadd grp1 创建用户组grp1
groupdel grp1 删除一个组
如果要删除的组里面有用户则无法删除
用户管理
useradd user2 创建用户
useradd user3 -u 1002 -g grp1 创建用户,并且uid为1002,加入到grp1组
useradd -u 1010 -g grp1 -d /home/333 -s /sbin/nologin user6 指定家目录,并且禁止登录
useradd -M user7 不创建家目录
userdel -r user1 删除用户连同家目录一起删除
usermod命令
id user1 查看用户组信息
usermod -G grp1 user1 把user1加入到grp1组
usermod -l user2 user1 把user1修改成user2
usermod -L user2 锁定用户
usermod -U user2 解锁用户
用户密码管理
passwd 用于修改用户密码
passwd user2 修改user2用户密码
passwd -l user2 锁定用户
passwd -u user2 解锁用户
echo "123456" |passwd --stdin user2 给用户创建密码,用于写shell脚本,不用重复输入密码
echo -e "111\n222" 输出结果换行,-e参数 需要\n 换行
mkpasswd命令
yum -y install -y expect 安装mkpasswd命令
mkpasswd -l 12 -s 3 -l 表示需要几位密码,-s 需要设置多少特殊字符
su命令
su - user2 切换到 user2用户
su - -c "touch /tmp/111" user2 以user2用户身份执行命令
sudo命令
visudo 打开sudo配置文件
找到下面配置,增加 wu ALL=(ALL) /usr/bin/ls, /usr/bin/mv, /usr/bin/cat 表示普通用户临时拥有权限
##Allow root to run any commands anywhere
root ALL=(ALL) ALL
wu ALL=(ALL) /usr/bin/ls, /usr/bin/mv, /usr/bin/cat
增加NOPASSWD: 表示输入sudo执行命令不需要密码,但是相对不是很安全
wu ALL=(ALL) NOPASSWD: /usr/bin/cd, /usr/bin/ls, /usr/bin/mv, /usr/bin/cat
使用方法
su - wu 先su到用户
sudo ls /root/ 在使用sudo查看
限制root远程登录
进入到sshd_config修改PermitRootLogin 把yes修改成no现在root登陆
vi /etc/ssh/sshd_config
PermitRootLogin no
说明:掌握df/du用法,掌握fdisk用法(p,n,w,d),理解主分区、扩展分区、逻辑分区概念
扩展:
1 MBR和GPT分区 www.lxlinux.net/9962.html
2 parted分区工具 www.cnblogs.com/wholj/p/109…
df命令查看磁盘容量
df -h 显示磁盘可用容量
df -i 查看inode
du命令查看目录大小
du -sh /etc/ 查看目录大小
du -sh /etc/passwd 查看文件的大小
du -sh /etc/* |sort -rn 查看文件的大小,并且排序
磁盘分区
fdisk -l 查看挂载磁盘
fdisk /dev/sdb 进行磁盘分区
一块磁盘只能有四个主分区或者三个主分区一个逻辑分区
n 选择主分区p或者扩展分区e
p 分主分区 e扩展分区 d删除一个分区 q不保存退出 w保存退出
磁盘格式化
查看系统支持的文件系统格式
cat /etc/filesystems
xfs
ext4
ext3
ext2
nodev proc
nodev devpts
iso9660
vfat
hfs
hfsplus
磁盘格式化
mke2fs -t ext4 -b 2048 /dev/sdb1
mke2fs不支持xfs格式需要使用mkfs.xfs默认格式化成xfs文件格式
mkfs.xfs /dev/sdb2
mkfs.ext4 默认格式化ext4文件
查看文件格式
blkid /dev/sdb2
如果空间存放的是大文件(视频,图片几M等,把块大小调大一些读取速度更快)
mke2fs -b 8192 /dev/sdb1
磁盘会默认预留百分之五的空间给root用户使用,如果磁盘大于1T可以把预留空间设置小一些
mke2fs -t ext4 -m 1 /dev/sdb1
-i选项,可以定义inode大小,对inode数量的设置可防止block数量够,inode数量不足而无法存储数据的情况
mke2fs -i 8192 -t ext4 /dev/sdb1
磁盘挂载
挂载磁盘到mnt下面
mount /dev/sdb /mnt/
卸载磁盘
umount /dev/sdb
强制卸载磁盘
umount -l /dev/sdb
设置机器重启磁盘自动挂载,配置文件在/etc/fstab
vi /etc/fstab
/dev/sdb /mnt xfs defaults 0 0
在/etc/fstab文件中也可以设置UUID的形式,查看磁盘的UUID
blkid
/dev/sdb: UUID="d0f7f6fa-eac1-4c1b-ace2-25d3af69f9e6" TYPE="xfs"
手动增加swap空间
dd操作磁盘,if是指定去哪里读,of指定写到哪里,bs是块的大小,count是指定增加大小100默认是100M
dd if=/dev/zero of=/tmp/newdisk bs=1M count=100
mkswap格式化
mkswap -f /tmp/newdisk
swapon加载到swap上
swapon /tmp/newdisk
卸载增加的swap
swapoff /tmp/newdisk
设置机器重启自动挂载
vi /etc/fstab
/tmp/newdisk swap swap defaults 0 0
lvm
[root@localhost /]# fdisk /dev/sdb
命令(输入 m 获取帮助):n
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p): p
分区号 (1-4,默认 1):
起始 扇区 (2048-20971519,默认为 2048):
将使用默认值 2048
Last 扇区, +扇区 or +size{K,M,G} (2048-20971519,默认为 20971519):+1G
分区 1 已设置为 Linux 类型,大小设为 1 GiB
命令(输入 m 获取帮助):t 这里需要把ID变成8e\color{red}{这里需要把ID变成8e}这里需要把ID变成8e
已选择分区 1
Hex 代码(输入 L 列出所有代码):8e
已将分区“Linux”的类型更改为“Linux LVM”
命令(输入 m 获取帮助):p
磁盘 /dev/sdb:10.7 GB, 10737418240 字节,20971520 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0xaea2a080
设备 Boot Start End Blocks Id System
/dev/sdb1 2048 2099199 1048576 8e Linux LVM
按照上面的方法创建分区,然后进行格式化物理卷
安装命令 lvm
yum -y install lvm2
pvcreate将磁盘设置为物理卷,如果遇到Device /dev/sdb1 not found 执行命令partprobe生成文件
pvcreate /dev/sdb1
pvdisplay或者pvs命令查看物理卷
pvdisplay
创建卷组
vgcreate vg1 /dev/sdb1 /dev/sdb2
查看卷组信息
vgdisplay 或者vgs
删除卷组
vgremove
创建逻辑逻辑卷
lvcreate -L 100M -n lv1 vg1
格式化
mkfs.ext4 /dev/vg1/lv1
挂载
mount /dev/vg1/lv1 /mnt/
扩容逻辑卷
umount /mnt/ 需要先卸载磁盘
lvresize -L 200M /dev/vg1/lv1
检查磁盘错误(ext4执行)
e2fsck -f /dev/vg1/lv1
更新逻辑卷信息(ext4执行)
resize2fs /dev/vg1/lv1
xfs文件系统需要执行
xfs_growfs /dev/vg1/lv1
缩减逻辑卷(xfs不支持)
先 !umount
e2fsck -f /dev/vg1/lv1 检查磁盘错误(ext)
resize2fs /dev/vg1/lv1 100M 更新逻辑卷信息(ext)
lvresize -L 100M /dev/vg1/lv1 重新设置卷大小
mount /dev/vg1/lv1 /mnt/ 挂载
扩展卷组
vgextend vg1 /dev/sdb3
vim
vim的配置文件
vim /etc/vimrc
一般模式
h或者向左方向键 光标向左移动一个字符
l(小写字母L)或者向后方向键 光标向右移动一个字符
k或者向上的方向键 光标向上移动一个字符
j或者向下的方向键 光标向下移动一个字符
Ctrl+f或PageUP 屏幕向前移动一页
Ctrl+b或PageDown 屏幕向后移动一页
数字0或者Shift+6 移动到本行行首
Shift+4 移动到本行行尾
gg 移动到首行
G 移动到尾行
nG(n是任意数字) 移动到第n行
一般模式下复制剪切粘贴
x,X x表示向后删除一个字符,X表示向前删除一个字符
nx 向后删除n个字符
dd 删除/剪切光标所在的那一行
ndd 删除/剪切光标所在行之后的n行
yy 复制光标所在行
p 从光标所在行开始,向下粘贴已经复制或者粘贴的内容
P 从光标所在行开始,向上粘贴已经复制或者粘贴的内容
nyy 从光标所在行开始,向下复制n行
u 还原上一步操作
v 按v后移动光标会选中指定字符,然后可以实现复制,粘贴等操作
编辑模式
i 进入编辑模式
I 大i 进去光标所在行首
o 光标所在下面一行
O 光标所在上面一行
a 光标所在后面一个字符
A 光标所在行末
命令模式
/word 向光标之后查找一个字符串word,按n向后继续搜索
?word 向光标之前查找一个字符串word,按n向前继续搜索
:n1,n2s/word1/word2/g 在n1-n2行之间查找word1并替换为word2,不加g则只替换每行的的第一个word1
:1,$s/word1/word2/g 将文档中所有的word1替换为word2,不加g则只替换每行的第一个word1
:w 保存文本
:q 退出vim
:w! 强制保存,在root用户下,即使文本只读也可以完成保存
:q! 强制退出,所有改动不生效
:wq 保存并退出
:set nu 显示行号
:set nonu 不显示行号
:nohl 取消高亮
压缩打包介绍
windows .rar .zip .7z
linux .zip .gz .bz2 .tar.gz .tar.bz2 .tar.xz
gzip压缩工具
- gzip不支持压缩目录
- 压缩文件格式,压缩完源文件会消失,变成 .gz格式
gzip 1.txt
- 解压缩文件,解压缩源压缩文件会消失
gzip -d 1.txt.gz 或 gunzip 1.txt.gz
- 压缩级别1-9 默认级别6
gzip -1 1.txt
- 查看压缩文件信息
file 1.txt.gz
- 查看压缩文件内容
zcat 1.txt.gz
- 压缩文件并且源文件不消失,放到指定目录,-c选项
gzip -c 1.txt > /usr/local/src/1.txt.gz
- 解压缩文件并且源文件不消失,放到指定目录下
gzip -d -c 1.txt.gz > /usr/local/src/2.txt
bzip2压缩工具
- bzip2不支持压缩目录
- 安装bzip2工具
yum -y install bzip2
- 使用bzip2压缩文件,压缩文件源文件也会消失
bzip2 1.txt
- 解压缩文件,源文件也会消失
bzip2 -d 1.txt.bz2 bunzip2 1.txt.bz2
- 使用bzip2压缩,指定路径 参数 -c 源文件不会消失
bzip2 -c 1.txt > /usr/local/src/1.txt.bz2
- 使用bzip2解压,参数 -d 解压缩,参数 -c 指定路径,源压缩文件不会消失
bzip2 -d -c /usr/local/src/2.txt.bz2 > 3.txt
- bzip2的压缩级别1-9,默认是9
bzip2 -9 1.txt
- file查看文件信息
file 1.txt.bz2
- bzcat查看压缩文件内容
bzcat 1.txt.bz2
xz压缩工具
- xz不支持压缩目录,有1-9个级别,默认6级别
- xz压缩文件
xz 2.txt
du -sh 2.txt 查看文件大小
- xz -d 解压缩或者unxz,源文件会消失
xz -d 2.txt.xz
- 使用 xz 压缩,指定路径 参数 -c 源文件不会消失
xz -c 2.txt > /usr/local/src/2.txt.xz
- 使用 xz 解压,参数 -d 解压缩,参数 -c 指定路径,源压缩文件不会消失
xz -d -c 2.txt.xz > 4.txt
- xzcat 查看xz压缩文件内容
xzcat 2.txt.xz
- file 查看文件信息
file 2.txt.xz
zip压缩工具
- 安装zip压缩工具
yum -y install zip
- 安装unzip解压缩工具
yum -y install unzip
- zip压缩工具,压缩和解压缩源文件都不会消失
- 使用zip压缩文件
zip 2.txt.zip 2.txt
- 使用zip压缩目录,需要参数 -r
zip -r 2.zip libXpm-3.5.13
- unzip解压缩到某个目录下,需要参数 -d
unzip 2.zip -d 3/
- zip压缩不支持查看文件内容,只支持查看文件列表,需要 -l 参数
unzip -l 2.zip
tar打包工具
- 打包一个目录,参数 -c 打包, -v 展示过程, -f 定义打包名称,打包源目录不会消失
tar -cvf 123.tar 123/
- 目录文件一起打包
tar -cvf 123.tar 123/ 1.txt
- 解压缩包,参数 -x 解压缩,-v 展示过程,-f 包的名称,解压缩会直接覆盖相同名称文件,解压缩源包不消失
tar -xvf 123.tar
- 查看打包里面的内容
tar -tf 123.tar
- 打包目录123,并且过滤掉1.txt, --exclude 过滤掉,参数 -c 打包, -v 展示过程, -f 定义打包名称,如果需要在增加一个过滤掉,需要在增加一个参数, 示例写法 --exclude 1.txt --exclude 2.txt,过滤掉以txt结尾的写法 --exclude "*".txt 必须要有引号
tar -cvf 2.tar --exclude 1.txt 123
tar打包并压缩
- 以gz格式的压缩打包,参数 -c 打包,-z 压缩格式gz,-v 展示过程,-f 打包名称
tar -czvf 123.tar.gz 123/ 1.txt
- 以bz2格式的压缩打包,参数 -c 打包,-j 压缩格式bz2,-v 展示过程,-f 打包名称
tar -cjvf 123.tar.bz2 123/ 1.txt
- 以xz格式的压缩打包,参数 -c 打包,-J 压缩格式xz,-v展示过程, -f 打包名称,xz打包最恨
tar -cJvf 123.tar.xz 123/ 1.txt
- 查看打包里面的内容,-tf支持查看所有压缩格式
tar -tf 123.tar.gz
- 解压缩包 -xvf 上面的压缩格式都支持,-C 指定存放目录
tar -xvf 123.tar.gz -C 333/
rpm工具
- rpm工具
- rpm包命名,vim-minimal包的名称,7.4.629包的版本,7.el7运行平台,x86_64运行架构平台64位系统,i686表示32位系统,知识点:64位的包已经安装32位的包,32位的包不能安装64位的包
vim-minimal-7.4.629-7.el7.x86_64.rpm
- 安装rpm包,-i 安装,-v 可视化,-h 显示进度
rpm -ivh virt-what-1.18-4.el7.x86_64.rpm
- 升级rpm包, -U 升级,-v 可视化,-h 显示进度
rpm -Uvh virt-what-1.18-4.el7.x86_64.rpm
- 卸载rpm包,-e 卸载
rpm -e vim-minimal
- 查询已经安装的包,-q 查询,-a 是all的意思
rpm -qa xz
- 查询指定的包是否安装
rpm -q
- 查询指定包的信息,可以看到安装日期,来源,key ID
rpm -qi xz
- 列出包安装的文件 ,-q 查询,-l 列出文件
rpm -ql xz
- 查看一个文件是由哪个包安装的,-q查询,-f 查看 需要绝对路径
rpm -qf /usr/share/man/man1/xzmore.1.gz
yum工具
- 列出可用rpm包
yum list xz
- 配置yum源文件目录
ls /etc/yum.repos.d/
- 搜索一个包
yum search all vim
- 安装一个包
yum install -y vim
- 查看组的管理信息
yum grouplist
- 安装组的信息 LANG=en 需要改成中文安装
yum groupinstall 'Development Tools'
- 卸载一个包
yum remove -y vim
- 更新包
yum update -y
- provides可以查看命令是由哪个包安装的
yum provides "/*/vim"
dnf用法
注意:dnf 是新一代的 rpm 软件包管理器,并没有预先安装在centos上面需要自己安装,用法跟yum几乎一样
- 安装dnf
yum install epel-release
yum install dnf
- 列出可用rpm包
dnf list
- 搜索一个包
dnf search vim
- 安装一个包
dnf install -y vim
- 查看组的管理信息
dnf grouplist
- 安装组的管理
dnf groupinstall -y
- 卸载一个包
dnf remove -y vim
- 更新包
dnf update -y
- provides 查看命令是由哪个包安装的
dnf provides "/*/vim"
本地仓库搭建
- 备份yum目录
cp -r yum.repos.d/ yum.repos.d.bak
- 删除源yum文件
rm -rf yum.repos.d/*
- 创建一个本地源文件
vim dev.repo
[dve]
name=install dvd
baseurl=file://mnt/BaseOS
enable=1
gpgcheck=0
- 清除缓存
yum clean all
- 查看本地源信息
yum repoinfo
更改仓库源地址,变更为阿里云的源
- diff 可以比较两个文件的不同之处
- 先备份源文件
cp /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak
- 下载阿里云源文件,并且覆盖掉文件
curl -o /etc/yum.repos.d/CentOS-Base.repo mirrors.aliyun.com/repo/Centos…
- 清除缓存并生成新的缓存
yum clean all yum makecache
epel扩展源和下载rpm包
- 安装扩展源epel,默认的一些安装包没有,所以安装扩展源
yum install -y epel-release
yum list |grep epel
- yum download rpm包名字
- dnf download rpm包名字
- yum install -y yum-utils
- yumdownloader rpm包名字
源码包安装
- 进入目录下载源码包并解压缩
cd /usr/local/src/
wget mirrors.cnnic.cn/apache/http…
tar zxvf httpd-2.4.54.tar.gz
- 进入目录编译安装,可以查看INSTALL文件是安装文档
cd httpd-2.4.54
less INSTALL
./configure --prefix=/usr/local/apache2
make
make install
- 注意:如果报错根据提示安装缺少的依赖,如(yum install -y apr apr-devel 把devel的也装上)
echo $? 这个命令是如果返回0值代表正常,1则是安装有问题
- 卸载就是删除安装路径的文件就好了
Ubuntu的三种方法,dpkg工具 跟之前的rpm一样的
- dpkg -i xxx.ded #安装指定的包
- dpkg -l #列出所有安装过得包
- dpkg -l 包名 #列出指定包
- dpkg -r 包名 #卸载
- dpkg -s 包名 #查看已安装包信息
- dpkg -L 包名 #查看包安装位置
- dpkg -S 关键词 #查找包含关键词的包
apt工具,跟之前的yum是一样的
- apt update #更新软件列表
- apt upgrade #升级软件
- apt list #列出所有包
- apt list --installed #列出已经安装的包
- apt install 包名 #安装指定的包
- apt remove 包名 #卸载指定的包
- apt autoremove 包名 #卸载并自动清理不再依赖的包
- apt show 包名 #查看包的信息
- apt download 包名 #下载deb包
- apt search 关键字 #搜索包
了解shell
- shell是一个命令解释器,提供用户和机器之间的交互
- 支持特定语法,比如逻辑判断,循环
- 每个用户都可以有自己特定的shell
- CentOS7默认shell为bash(Bourne Agin Shell)
- 还有zsh,ksh等
shell命令历史
- history命令
history 查看历史命令
history -c 清空当前里面命令,不会清空文件保存的
- .bash_history
.bash_history 是记录用户敲的历史命令,在各自的家目录里面
- 最大1000条
- 变量HISTSIZE, 系统内置保存历史命令变量,默认保存1000条
echo $HISTSIZE
- /etc/profile 中修改可以修改命令保存条数,HISTSIZE=5000 source /etc/profile 刷新变量配置,使其生效
- history 命令是没有显示时间的,需要自己在profile文件中增加时间变量
vim /etc/profile
HISTTIMEFORMAT="%Y/%m/%d %H:%M:%S "
source /etc/profile
- 永久保存chattr +a ~/.bash_history 永久保存历史命令,不会被删除,不受默认条数的限制
- !! 执行你最后一个命令
- !n n表示数字行,执行某一行命令
- !word 从下往上找,第一个带有word开头的命令执行
命令补全及别名
- 命令补全 tab键
- 参数补全,安装bash-completion,需要重启系统生效
- alias别名给命令重新起个名字
设置别名为restart alias
restart='systemctl restart network.service'
alias的配置文件都在 /etc/profile.d/ 下面存放
unalias restart 取消设置的别名
- 各用户都有自己配置别名的文件 ~/.bashrc
- ls /etc/profile.d/
- 自定义的alias放到~/.bashrc
通配符
- 统配符号 *
ls *.txt
- 一个任意的字符 ?
ls ?.txt
- 范围值 [0-9] [0-9a-zA-Z]
ls [0-3].txt
- 取值{1,2}
ls {1,2}.txt
输出输入重定向
- 重定向删除 > 删除原来的内容,从新输入
cat 1.txt > 2.txt
- 重定向追加 >> 追加内容
cat 1.txt >> 2.txt
- 错误信息指定输入到文件中去 2>
ls aaa.txt 2> err
- 错误信息追加到指定文件中 2>>
ls aaa.txt 2>> err
- 正确和错误的信息重定向文件中 &>,&>>
ls 1.txt &> 2.txt
- 输入重定向 <, 把左边的内容输入到右边去
- 统计文件的行数
wc -l < 1.txt
扩展: bashrc和bash_profile的区别
关于PROMPT_COMMAND环境变量的含义 www.cnblogs.com/runbean/p/1…blog.yuankeedu.com/?p=484
- source exec 区别
alsww.blog.51cto.com/2001924/111…
管道和作业控制
- 统计行数
cat 1.txt |wc -l
- 过滤出aaa的内容
cat 1.txt |grep "aaa"
- 暂停一个任务
ctrl z
- 查看后台的任务
jobs
- 把任务调到后台
bg[id]
- 把任务调到前台
fg[id]
- 命令后面加&直接丢到后台
变量
- PATH,HOME, PWD, LOGNAME
echo $PATH
- env命令
env 查看系统变量定义
- set命令多了很多变量,并且包括用户自定义的变量
- 自定义变量a=1
- 变量名规则:字母,数字下划线,首位不能为数字
- 变量值有特殊符号时需要用单引号括起来 a='a b c'
- 变量的累加
a=1
b=2
echo b
- 全局环境变量 export b=2
- unset取消变量
unset b
环境变量配置文件
- /etc/profile 用户环境变量,交互,登录才执行
- /etc/bashrc 用户不用登录,执行shell就生效
- ~/.bashrc
- ~/.bash_profile 针对自己当前用户生效
- ~/.bash_history 历史的一些命令
- ~/.bash_logout 定义用户退出的一些操作
重新加载环境变量
source /etc/profile 或者 . /etc/profile
- PS1 变量详解 www.jianshu.com/p/03de7fd95…