ls 文件查看
ls 查看当前目录下的文件
ls [选项, 选项] 参数
常用选项:
-l 长格式显示文件
-a 显示隐藏文件
-r 逆序显示
-t 按照时间顺序显示
-R 递归显示
例:ls -l /root 显示root目录下的文件,并且长格式化显示
注:可使用多个选项如 ls -l -a -r 等同于 ls -lar
cd 移动操作目录。cd是shell的内置命令,通过man cd显示的是命令解释器shell的帮助信息,可通过help cd获取真正的帮助信息。
cd 更改当前的操作目录
cd [选项] 参数
常用选项
- 返回上一次移动的目录
例:cd /usr/local/... 绝对路径。cd usr/local/... 相对路径
mkdir 创建目录
mkdir
mkdir [选项] 参数
常用选项
-p 创建多级目录
例:mkdir a 在当前目录下创建目录a。mkdir /a 在根目录/下创建目录a。mkdir -p /a/b/c/d/e/f 创建多级目录
rmdir 删除目录。此命令用的较少,一般用rm
rmdir 默认只可删除空目录
rm 删除目录或者文件
rm
rm [选项] 参数
常用选项
-r 递归删除,同时删除子目录
-f 忽略删除提示
例:rm -r a 删除当前目录下的a目录及其所有子目录。rm -rf a 删除a目录及其所有子目录,并且忽略删除询问。
注:可使用 Ctrl + C 快捷键取消操作。
cp 复制文件或目录
cp
cp [选项] SOURCE... DIRECTORY ...
常用选项
-r 复制目录
-v 显示复制过程
-p 保留用户、权限、时间等文件属性
-a 等同于 -dpR
例子:cp -r a a1 复制a文件夹到a1。cp -v file* /home 移动所有file开头的文件到/home目录下。
cp -v file? /home ?只通配一个字符,*通配多个字符。
注:常用通配符 * 匹配到任何字符;
? 匹配任意1个字符;
[xyz] 匹配xyz任意1个字符;
[a-z] 匹配a到z之间任意1个字符;
[!xyz]或[^xyz] 不匹配xzy任意1个字符
touch 创建文件
touch
touch [选项] FILE
mv 移动文件或目录,重命名目录
mv
mv [选项] SOURCE... DIRECTORY ...
例:mv a a2 移动当前目录的a文件夹到当前目录并重命名为a2。
文本查看命令
cat 显示文本内容到终端
head 从文件开头查看,默认显示开头10行
例:head -5 a.txt 显示a.txt文件中开头5行内容
tail 从文件结尾查看,默认显示结尾10行
常用参数-f 文件内容更新后,同步显示到终端
wc 统计文本内容
wc anaconda-ks.cfg 统计文内容行数、单词数、字节大小
more 分页查看文本内容,用空格键翻页
打包、压缩、解压命令
tar 打包命令
-c 打包
-x 解包
-f 指定操作类型为文件
tar cf /tmp/etc-backup.tar /etc 打包/etc目录下的所有文件到etc-backup.tar文件中
ls -l /tmp/etc-backup.tar 查看打包后的文件大小
ls -lh /tmp/etc-backup.tar 查看打包后的文件大小,文件大小以M为单位显示。
tar czf /tmp/etc-backup.tar.gz /etc 打包并压缩/etc目录下的所有文件到etc-backup.tar.gz文件中(使用gzip压缩算法)
tar cjf /tmp/etc-backup.tar.bz2 /etc 打包并压缩/etc目录下的所有文件到etc-backup.tar.gz文件中(使用bzip2压缩算法)
tar xf /tmp/etc-backup.tar -C /root 解包etc-backup.tar到/root目录。
同理 tar jxf ... 或 tar zxf ...
注:网上常见的后缀 .tbz2 和 .tgz,其实就是 tar.bz2 和 tar.gz 的缩写
注:mac上传文件 scp dlib.tgz root@172.16.11.146:/home/zeke
vi 文本编辑器
vi四种模式
正常模式(Normal-mode)
插入模式(Insert-mode)
命令模式(Command-mode)
可视模式(Visual-mode)
vim vi的加强版
模式切换
i 进入插入模式
I 进入插入模式,并将光标移动到所在位置的行头
A 进入插入模式,并将光标移动到所在位置的行尾
O 进入插入模式,并将光标移动到所在位置的下一行,相当于起新行
shift + O 进入插入模式,并将光标移动到所在位置的上一行
正常模式下的快捷操作
HJKL H左移 L右移 J下移 K上移动
yy 复制一整行 3yy 复制3行 y 移动到当前行的结尾
命令模式下的快捷操作
:set nu 显示行号
:set nonu 不显示行号
:wq 保存并退出
:q 退出不保存
:q! 强制退出不保存
:! 执行其他命令
:/ 查找内容,光标自动移动到首个匹配字符,n跳到下一个,N跳到上一个。
:s s/x/X 替换x为X。只替换当前行的第一个匹配。
:%s %s/x/X 替换全局所有行的x为X。只替每行的第一个匹配。
%s/x/X/g 替换x为X。全局操作,多次替换。
3,5s/x/X 3到5行替换x为X
注: 可以在 /etc/vimrc文件内容最后新起一行加 set nu,每次打开vim都默认显示行号
可视模式
v 单词可视化模式
V 行可视化模式
ctrl+v 块可视化模式
例:进入可视化模式选中内容,shift+i进入插入模式并输入内容,按两次esc,输入内容就全部复制到选中块每行的前面
进入可视化模式选中内容,按d删除块内容
用户管理
useradd 增加用户。useradd zhangsan
passwd 设置用户密码。passwd zhangsan
userdel 删除用户。userdel zhangsan (会保留用户家目录)。userdel -r zhangsan (删除留用户家目录)
usermod 修改用户属性。usermod -g group1 zhangsan 将张三移动到group1组中
chage 修改用户属性。
注:id root 查看root是否存在,su - zhangsan 切换到张三目录,- 表示连同环境一起切换
用户配置文件 /etc/passwd
用户组管理
groupadd 增加用户组。
groupdel 删除用户组。
用户切换
su 切换用户
su - username 使用login shell 方式切换用户
sudo 以其他用户身份执行命令
visudo 设置需要使用sudo的用户(组)
文件类型
- 普通文件
d 目录文件
b 块特殊文件
c 字符特殊文件
l 符号链接
f 命名管道
s 套接字文件
文件权限表示方法
r 读
w 写
x 执行
数字权限的表示方法
r=4
w=2
x=1
修改权限命令
chmod 修改文件、目录权限
chmod u+x /tmp/testfile
chmod 755 /tmp/testfile
chown 修改文件属主、属组
chown user1:group1 test.txt
特殊权限
SUID 用于二进制可执行文件,执行命令时取得文件属主权限
如 /usr/bin/passwd
SGID 用于目录,在该目录下创建新的文件和目录,权限自动更改为改目录的属组
SBIT 用于目录,该目录下新建的文件和目录,仅root和自己可以删除
如 /tmp
网络管理
网络状态查看工具
1. net-tool (centos7以下)
ifconfig
route
netstat
2. iproute2(centos7以上主推)
ip
ss
ifconfig(安装: yum install net-tools)
eth0第一块网卡(网络接口)
你的第一个网络接口可能叫做下面的名字
eno1 板载网卡
ens33 PCI-E网卡
enpOs3 无法获取物理信息的PCI-E网卡
CentOS7 使用了一致性网络设备命名,以上都不匹配则使用eth0
网卡名称统一修改为eth0(方便统一管理):
① 编辑/etc/default/grub文件,在GRUB_CMDLINE_LINUX行增加配置 biosdevname=0 net.ifnames=0
② 更新grub, 执行命令:grup2-mkconfig -o /boot/grub2/grub.cfg
③ 重启系统 reboot
注:网卡名称配置对照表
biosdevname net.ifnames 网卡名
默认 0 1 ens33
组合1 1 0 em1
组合2 0 0 eth0
查看网卡物理连接情况(网线有没插好)
mii-tool eth0
查看网关(配置路由)
route -n
网络配置命令
ifconfig <网卡接口> <IP地址> [netmask 子网掩码]
ifconfig <网卡接口> up
ifconfig <网卡接口> down
添加网关:
route add default gw <网关ip>
例:route add default gw 172.16.11.2
route add -host <指定ip> gw <网关ip>
route add -net <指定网段> netmask <子网掩码> gw <网关ip>
网络故障排除命令(从上到下,从粗到细)
ping
traceroute
mtr
nslookup (检测域名对应ip,安装yum install bind-utils)
telnet (检测端口)
tcpdump
例:tcpdump -i any -n port 80 捕获任何网卡上的80端口数据包,以ip形式显示
例:tcpdump -i any -n host 10.0.0.1 捕获任何网卡上与主机交互的数据包,以ip形式显示
例:tcpdump -i any -n host 10.0.0.1 and port 80 -w /tmp/file/ 捕获并保存到本地
netstat
例:netstat -ntpl 。 n ip形式展示、t tcp、p 进程、l tcp状态
ss
网络服务管理程序,SysV和systemd
service network start|stop|restart
chkconfig -list network
systemctl start|stop|restart NetworkManager
systemctl enable|disable NetworkManger
软件安装包管理器
rpm包
rpm包格式
vim-common-7.4.10-5.el7.x86_64.rpm
软件名称 版本 系统版本 平台
rpm -qa 查询所有已安装的软件
rpm -q [软件包名] 查询指定软件包
rpm -e [软件包名] 卸载指定软件包
yum命令
常用选项
install 安装
remove 卸载
list|grouplist 查看软件包
update 升级
源代码编译安装
###以安装openresty举例
wget https://openresty.org/download/openresty-1.15.8.1.tar.gz
tar -zxf openresty-VERSION.tar.gz
./configure --prefix=/usr/local/openresty
注:可能提示缺少cc编译器,yum install gcc gcc-c++
可能提示缺少pcre库,yum install pcre-devel (devel一般指开发包)
可能提示缺少OpenSSL库,yum install openssl-devel
make -j2 使用两个逻辑内核编译,编译结果在 build目录中
make install
升级内核
rpm格式内核
uname -r 查看内核版本
yun install kernel-3.10.0 升级内核版本
yum update 升级已安装的其他软件版本
源代码编译安装内核
安装依赖包
yum install gcc gcc-c++ make ncurses-devel openssl-devel elfutils-libelf-devel
下载并解压缩内核
https://www.kernel.org
tar xvf linux-5.1..10.tar.xz -C /usr/src/kernels
grub位置文件
grub是什么,可以通过grub配置文件充值root密码,SELinux
grub位置文件
/etc/defalut/grub 默认配置文件
/etc/grub.d/ grub配置文件集
进程管理
进程的概念与进程查看
进程开始,从int main(int argc, char *argv[])
进程终止,分正常终止和异常终止
正常终止分从main返回、调用exit等方式
异常终止分为调用abort、接收信号等
查看命令
ps 例 ps -eLf | more
pstree
top 了解各项指标的意义
结论:
进程的控制命令
调整优先级
nice 范围从-20到19,值越小优先级越高,抢占资源就越多
例:nice -n 10 ./a.sh
renice 重新设计优先级
例:renice -n 15 20675
进程的作业控制
加 & 进行后台运行
jobs 查看后台运行的进程
fg [jobs编号] 将后台运行的集成调回前台运行
ctrl z 暂存运行在前台的进程
bg [jobs编号] 将暂存的进程放到后台运行
进程间通信方式-信号
kill -l 查看进程间通信支持的信号
守护进程和系统日志
使用nohup与&符号配合运行一个命令
nohup命令使进程忽略hangup(挂起)信号。即不受重终端关闭影响
注:cd /proc/[进程id] 进入进程目录空间
守护进程
使用screen命令
screen 进入screen模式
ctrl + a d 退出screen模式
screen -ls 列出所有screen会话
screen -r [screenID] 恢复指定screen
服务管理工具systemctl
service (centos6及以下常用)
脚本目录:/etc/init.d/
systemctl (centos7以后版本常用)
脚本目录:/usr/lib/systemd/system/
常见操作
systemctl start|restart|reload|enable|disable 服务名称
软件包安装的服务单元 /usr/lib/systemd/system
SELinux
MAC(强制访问控制)与DAC(自主访问控制)。生产linux大部分都是关闭的
查看SELinux的命令
关闭SELinux
内存与磁盘管理
内存和磁盘使用率查看
内存常用命令
free
top
磁盘分区和文件大小查看
fdisk -l 查看磁盘设备信息
df -h 查看磁盘分区、文件、挂载信息
du -h [filename] 查看文件实际大小
例:使用 dd if=/dev/zero bs=4M count=10 seek20 of=bfile 创建存在空洞文件
比较 ls -lh bfile 和 du -h bfile 统计结果的区别
i节点和数据块操作
使用mv移动文件如果移动到不同分区,i节点和数据块会变化,移动较为缓慢。
echo > [filename] 只对block数据库进行改变i节点不变,vim会对i节点进行改变
rm命令更专业的理解是,让i节点与文件名的链接断开
ln afile bfile 将bfile链接到afile的i节点上
ln -s afile afile2 创建软连接afile(i节点不同)
硬盘分区和挂载
插入新硬盘设备后
创建分区:
fdisk /dev/sdb 根据提示操作 (m菜单)
格式化分区
mkfs.ext4 /dev/sdb1 将分区格式化成ext4格式
使用分区(挂载目录)
① 创建挂载目录 mkdir /mnt/sdb1
② 挂载 mount /dev/sdb1 /mnt/sdb1
注:如果硬盘设备大于2T,则无法使用fdisk分区,需要使用parted
mount挂载只是临时挂载,重置之后会无效
解决:固化挂载 vim /etc/fstab 增加配置:/dev/sdb1 /mnt/sdb1 ext4 defaults 0 0
用户磁盘配额
quota
交换分区
交换分区swap的查看与创建
mkswap [分区名] 格式化成swap
mkswapon [分区名] 打开交换分区
mkswapoff [分区名] 关闭交换分区
使用文件制作交换分区
dd if=/dev/zero bs=4M count=1024 of=/swapfile
固化配置: /swapfile swap swap defaults 0 0
RAID与软件RAID技术
硬件RAID
RAID0
RAID1
RAID5
RAID10
软件RAID
mdadm
逻辑卷管理
逻辑卷和文件系统的管理
即逻辑硬盘,/根目录就是一个大的逻辑卷,
为Linux创建逻辑劵(前提插入新硬盘并分好区)
pvcreate /dev/sd[b,c,d]1 创建物理卷
pvs 查看
vgcreate /dev/sdb1 /dev/sdb2 创建物理卷组(拼在一起)
vgs 查看卷组
lvcreate -L 100M -n lv1 vg1 创建逻辑卷。-L大小 -n名字。(接下来可以挂载使用了)
挂载:mkdir /dev/test -> mkfs.xfs /dev/vg1/lv1
lvs 查看逻辑卷
注:流程 fdisk /dev/sd?? -> pv -> vg1 -> lv1 -> xfs -> mount
逻辑劵挂载使用,例: mkfs.ext3 /dev/vg1/lv1 mount /dev/vg1/lv1 /mnt/lv1
动态扩容逻辑劵
例:扩展root lv逻辑卷。 root lv属于cnetos vg,cnetos vg已经用完了,所以要先拓展cnetos vg
步骤: ① 扩充vg: vgextend centos /dev/sdd1。将没有添加到vg的pv加入到centos卷组中
② 扩充lv: lvextend -L +15G /dev/centos/root。为centos卷组的root逻辑卷增加15G
③ 通过 df -h 发现文件系统仍未扩大,需要通知文件扩大
执行:xfs_growfs /dev/centos/root 告诉文件系统centos下的root逻辑卷已扩大
或执行:resize2fs /dev/vg1/lv1
系统综合状态查询
使用sar命令查看系统状态
使用第三方命令查看网络流量
yum install epel-release
yum install iftop
iftop -P
Shell篇
Shell是命令解释器,用于解释用户对操作系统的操作
Shell有很多
Linux的启动过程
BIOS->MBR->BootLoader(grub)->kernel->systemd->系统初始化->shell
网友评论