1. Linux
2. 帮助命令
2.1. man
帮助命令
如:man ls
按Q退出
2.2. help
针对内部命令帮助
如:help cd
2.3. XXX–help
如:ls –help
查看该命令内部的帮助文档
3. 文件
3.1. ls
列出当前目录中的文件和目录
ls -a 显示所有文件和目录包括隐藏的
ls -l 所有文件和隐藏文件的 详细信息 可以缩写为 ll
3.2. 显示当前目录
pwd
3.3. 打开指定目录
cd / #返回到root根目录
cd ../ #返回上一级目录
3.4. 创建目录
mkdir 目录名 如:mkdir a
创建多级目录
cd a/b/c -p #加入参数-p
3.5. 创建文件
touch 文件名 如:touch test.txt
touch a{1..10}.txt 创建 a1-a10的文件
stat 文件名 查看文件的详细信息
3.6. 删除目录
rmdir a
删除多级目录
rmdir a/b/c -p
可以缩写为rm
rm 目录名 -r 层叠递归的询问方式删除目录
rm 目录名 -rf 以递归删除并且不询问
3.7. 复制文件
cp 文件名 文件目录
cp 文件名 文件目录/重命名文件名 (如果不指定则为原名称)
cp xxx.txt ./home
cp -r 复制该文件夹下的子目录和文件
3.8. 移动文件
mv(move) 文件名 目录
mv test.txt ./a
移动并重命名
mv 文件名 目录重命名名字 mv test.txt ../qaq
3.9. 更改文件拥有者
chown 用户名 文件名 更改文件拥有者
chown 用户名:用户组 文件名 更改文件拥有者和用户组
3.10. 更改文件用户组
chgrp [选项] 用户组 文件路径
3.11. 修改文件权限
chmod 用户组操作权限文件
用户组:u g o a u 表示该文件的拥有者,g 表示与该文件的拥有者属于同一个群体(group)者,o 表示其他以外的人,a 表示这三者皆是。
操作: + - = + 表示增加权限、- 表示取消权限、= 表示唯一设定权限。
权限:r 表示可读取,w 表示可写入,x 表示可执行,X 表示只有当该文件是个子目录或者该文件已经被设定过为可执行。
如 chmod u-rw aa
chmod可以使用数字代替chmod abc aa
如chmod 777 aa 代表 u rwx g rwx o rwx
其中a,b,c各为一个数字,分别表示User、Group、及Other的权限。
r=4,w=2,x=1
- 若要 rwx 属性则 4+2+1=7;
- 若要 rw- 属性则 4+2=6;
- 若要 r-x 属性则 4+1=5。
3.12. 软、硬连接
ln 源文件名 自定义名字 硬连接
ln -s 源文件名 自定义名字 软连接
3.13. 重命名
mv 原文件名 重命名文件名
mv test.txt qaq
4. 显示文本文件中的内容
cat 文件名 如:cat test.txt 一次性显示所有内容
more 文件名 如:more test.txt 当按下回车后展示下一行,按q退出,按空格展示下一屏
less 文件名 如:less test.txt 一页一页展示文本内容,用paup和padn进行翻页
tail 文件名 -n X 如:tail test.txt -n 2 只看该文件最后的X行
tail 文件名 -f 可以动态查看文件变化
head 文件名 -n X 如:head test.txt -n 2 只看该文件前面的X行
5. 清屏
clear 或者 ctrl+l
6. 打印字符
echo 字符串
如echo “abc”
包含特殊字符
echo -e “abc \t cd\n” #加上-e参数
重定向(覆盖文本中的内容)
echo “字符串” > 文件名(可写入文件)
将字符串写入到文本中
追加
echo “字符串” > >文件名(可写入文件)
将字符串插入到文本中
cat 不存在的目录 &>> error.log 将命令的失败结果 追加到error.log中
7. awk
ark [选项] ‘语法’ 文件名 查询文件中包含awk语法的文件
- -F ‘字符’ 使用 指定字符串切割
- $ + 数字 获取第几段内容
- $0 获取当前行内容
- OFS=”字符” 将切割后的内容 以指定字符连接
- print 打印
- toupper() 将指定内容转换为大写 cat a.txt | awk -F ‘ ‘ ‘{print toupper($1)}’
- tolower() 将指定内容转换为小写
- length() 返回字符长度
'BEGIN{初始化操作}
{每行都执行}
END{结束时操作}'
文件名
8. 用户
8.1. 用户管理
useradd 用户名 添加新用户
passwd 新用户名 为新用户添加密码
id 用户名 查看指定用户是否存在
cat /etc/passwd 查看该centos中所有用户和组
userdel 用户名 删除该用户
userdel 用户名 -r 删除该用户和该用户家目录
su 用户名 切换用户
su - 用户名 切换用户并进入该用户家目录
sudo 设置普通用户具有root权限
usermod -g root(欲要加入的组) 用户名 修改用户组
whoaimi 当前登录用户信息
logname 当前登录用户信息
8.2. 用户组
groupadd (选项) 用户组名 创建用户组
groupmod (选项) 用户组名 修改用户组
grops 用户名 查询用户所属组
gropdel 用户组名 删除用户组
gpasswd (选项) 组名 管理指定组的用户
gpasswd -a 用户名 用户组 将用户加入指定组
9. 历史命令
history
10. 日期
timedatectl 根据时区校正时间
timedatectl list-timezones 查看当前国家下的时区
timedatectl set-timezone “Asia/Shanghai” 设置指定时区
timedatectl set-ntp true 关闭ntp同步时间
10.1. 查看日期
date +%Y 年
date +%m 月
date +%d 日
date +%Y-%m-%d 年月日
date +%H 时 M分 S秒
date -s “2021-04-19” 更改系统时间
cal 当月日历
cal 2021 当前年日历
11. 克隆修改Linux网卡属性
vim /etc/udev/rules.d/70-persistent-ipoib.rules 修改mac
vim /etc/sysconfig/network-scripts/ifcfg-ensXX 修改ip地址
hostname:查看主机名
hostname 主机名:修改主机名 重启后恢复 临时更改 如:hostname admin
如要永久修改需要 更改 /etc/sysconfig/network文件
vim /etc/sysconfig/network 修改主机名称
vim /etc/hostname 修改主机名
12. VIM编辑
vim 文件名 进入vim一般模式
按I、a、o进入输入模式 按esc退出到一般模式
:wq 退出vim编辑
:q! 不保存退出
vim 文件名 +指定行数 进入vim并光标在指定行数 如:vim a.txt +5
yy 复制光标当前行
y数字y 从当前行复制到n行
u 撤回上一步
dd 删除当前行
d数字d 从当前行删除到n行
x 删除一个字母
X 退格键
yw 复制一个单词
dw 删除一个词
13. iptables
netstat -tnl #查看服务器目前开放端口
iptables -I INPUT -p tcp --dport 8000 -j ACCEPT #开启8000端口
iptables -L -n -v #查看已添加的iptables规则 查询编号id
iptables -D INPUT 编号id #删除指定编码的规则
iptables -F #一键清空所有规则
iptables -A INPUT -p tcp --dport 80 -j DROP #封指定的端口
14. 开放端口
firewall-cmd --zone=public --add-port=8888/tcp --permanent
# 命令含义:
--zone #作用域
--add-port=1935/tcp #添加端口,格式为:端口/通讯协议
--permanent #永久生效,没有此参数重启后失效
#重启
firewall-cmd --reload
# 查询端口是否开放
firewall-cmd --query-port=8080/tcp
# 开放80端口
firewall-cmd --permanent --add-port=80/tcp
# 移除端口
firewall-cmd --permanent --remove-port=8080/tcp
#重启防火墙(修改配置后要重启防火墙)
firewall-cmd --reload #ubuntu 我干要重启
service iptables stop #停止
开放所有端口
iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT
iptables -F
iptables-save
#建议删除 iptables
sudoapt-get remove iptables
15. 防火墙
service iptables status 防火墙状态
service iptables stop 关闭防火墙
service iptables start 启动防火墙
chkconfig iptables off 禁止防火墙自启
netstat -nltp 查看聆听的端口
16. 查看系统版本
getconf LONG_BIT
17. 后台运行
nohup 运行文件名/命令名 &
nohup 命令
用途:执行命令,忽略挂起指令,可用于后台运行,关闭shell不受影响
语法: nohup COMMAND [ARG]
18. 添加新的硬盘并挂载
我将使用VM来进行模拟
先使用df看下我的电脑硬盘信息:
df -h
可以看到只有一个sda1分区装载/boot,还有一个扩展分区
查看dev下的硬盘:
只有一个硬盘(两个分区)
注意:
如果你是IDE 接 口 硬 盘 :/dev/dh[a-z],这里的硬盘名字应该是dh[a-z]开头
如果你是SCSI 接 口 硬 盘 : / dev/[ a -z ],这里的硬盘名字应该是sd[a-z]开头
接下来将进行另一块硬盘的安装:
1.将硬盘装在电脑上,重启电脑,后查看/dev/ 下有没多了一块硬盘
2.用fdisk对这块硬盘分区
fdisk /dev/sdb
按下m显示菜单:
因为要新建分区选择n
这里是问你是要建立主分区还是扩展分区,这里是第一次建立选择主分区p
因为是MBR分区只能有4个分区,这里建立第一个分区,输入1
这里问你个分区的起始扇区,这里直接回车(默认),相当于输入了2048
这里问你的结束扇区,这里不需要计算,直接输入+1G 加号后面为这个分区的大小
此时第一个分区已经建立,但还是在内存中并没有写到硬盘sdb中,所以直接输入w
注意这里可以继续创建分区,完了再输入w,我这里只建立一个分区
经过以上步骤后分区的建立已经完成,但是此时系统还无法识别分区表
3.内核重新读取分区表
partprobe /dev/sdb
注意:这里是整个磁盘sdb,不是磁盘分区sdb1
4.创建文件系统(格式化分区)
Linux 中的主流的文件系统有:ext4和xfsd等
这里我建立ext4文件系统
mkfs.ext4 /dev/sdb1
注意:这里是磁盘分区sdb1,不是整个磁盘sdb
5.挂载
在挂载之前你需要确定挂载的目录,我这里是/mnt/sdb1-zhi ,没有目录的自己mkdir,这里目录最好建立在/mnt下,这个目录是专门挂载的,可以任意。
将来这个分区就会与这个/mnt/sdb1-zhi目录建立联系
手动挂载
mount /dev/sdb1 /mnt/sdb1-zhi/
df一下:
这里已经挂载成功,但是这只是一次性的,重启后就会消失
永久挂载:
要对/etc/fstab文件编辑
vim /etc/fstab
比如第一行中
硬盘路径 文件路径(挂载点) 文件系统类型 设备的自定义选项 是否转存 fsck的顺序
/dev/mapper/CentOS-root / xfs defaults 0 0
UUID=e4ef36e1-0840-4a58-a4f7-c26f52ead6f1 /boot xfs defaults 0 0
我们要在最后一行写入自己的分区与文件路径,可以仿照上面的写
/dev/sdb1 /mnt/sdb1-zhi ext4 defaults 0 0
这里第一列也可以写入UUID
UUID的查询:
blkid
转存:0 不转存,不备份 1转存,备份
fsck:开机检查磁盘的顺序 0表示不检查 1234….为检查顺序
以上步骤完成后,还需要判断是否正确
mount -a
如果没有其他信息出现,表示你插入的正确,否则错误。
如果错误且没有检查,开机后将进入紧急模式,无法开机
最后开机重启后df一下,看看是否正常
最后总结一下
1.fdisk /dev/sdb
2.partprobe /dev/sdb
\3. mkfs.ext4 /dev/sdb1
4.挂载 mount /dev/sdb1 /mnt/sdb1-zhi
vim /etc/fstab
5.mount -a
18.1. 删除挂载
umount 磁盘名 挂载点 如:umount /dev/sdb1 /sdb1
19. 搜索
find 搜索范围 选项(name-查询方式、user-用户名、size-文件大小、ctime-文件时间)
查询指定文件:
find -name 文件名
find -name 文件名前面*(匹配包含此名字的文件)
文件大小
find -size +1k(大于1k)
find -size -1k(小于1k)
19.1. 创建查找文件数据库索引
updatedb 创建locate数据库初始化
locate 文件名
19.2. 查找文件指定内容
grep 查找内容 源文件
- -n(显示指定行号可省略)
- —color 高亮显示关键字
- -An 显示后面的n行
- -Bn 显示前面的n行
- -c 统计个数
- -v 查询不包含该关键字的
- -i 忽略大小写
grep - n 123 abc.txt
管道符 | 将前一个命令的结果传递给后一个命令
如:
ll | grep ini (会根据ll的结果查找指定内容)
20. 压缩
20.1. gzip
gzip 文件名
gunzip 文件名.gz 解压gz文件
不保留原文件,只压缩文件不压缩文件夹
gzip -dv 压缩文件 解压gz文件
20.2. zip
zip -r(可省 递归操作目录) 文件名.zip 要压缩的内容 压缩zip文件
unzip -d(可省指定解压文件的存放路径) 压缩文件.zip 解压zip文件
unzip -l 压缩文件.zip 查看zip里面的文件
20.3. tar打包
tar 选项 xxx.tar.gz 将要打包进去的内容
- -c产生.tar打包文件
- -v显示详情信息
- -f指定压缩后的文件名
- -z打包同时压缩
- -x解包.tar文件
- -C解包目录
打包: tar -cvf xxx.tar ./*
打包并压缩: tar -zcvf xxx.tar.gz ./*
查看压缩包的文件:tar -ztvf xxx.gz
解压:tar -xvf xxx.tar
tar -zxvf xxx.tar.gz -C ./*
备份 /home, /etc ,但不要 /home/dmtsai
tar --exclude /home/dmtsai -zcvf myfile.tar.gz /home/* /etc
在 /home 当中,比 2010/06/01 新的文件才备份
tar -N '2010/06/01' -zcvf home.tar.gz /home
20.4. bzip2
bzip2 文件 压缩成.bz2文件 并删除原来的文件
bunzip2 -v(可省解压过程) 文件.bz2 解压
21. 进程
ps 查看当前系统进程状态
-a 显示所有进程
-u 显示所有用户的所有进程
-x 显示没有终端的进程
ps -aux 查看所有进程
21.1. 结束进程
kill -9(可省,强制结束进程) 进程号
killall 进程名
21.2. 进程树
pstree 选项(-p显示进程id,-u显示进程的所属用户)
21.3. top 健康
top 显示所有进程信息
top -c 显示进程的详细路径
top -p PID 显示指定的进程信息
22. 定时任务
22.1. crond 启动定时服务
重新启动:service crond restart
启动:systemctl start crond
查看状态:systemctl status crond
22.2. crontab
crontab -e 编辑定时任务
crontab -l 查询任务
crontab -r 删除当前用户所有任务
22.3. * 执行的任务
- 一小时当中的第几分钟 0-59
- 小时 0-23
- 当月第几天 1-31
- 几月 1-12
- 星期几 0-7(0和7代表星期日)
- 代表任何时间. 如第一个星则为 每分钟执行
, 代表不连续时间 0 8,12,16 * 代表每天8点12点16点执行一次
- 代表连续时间 0 5 1-6 代表周一到周六 5点执行
/x 代表每隔多久执行一次 /10 代表每隔10分钟执行一次
30 * * * * /root/qb.sh > /dev/null 2>& &
23. 安装软件
23.1. rpm
23.1.1. 查询
rpm -qa 查询所有rpm软件包
rpm -qa | grep rmp软件包 查看指定软件是否安装
23.1.2. 卸载
rpm -e rpm软件包 卸载指定软件包
rpm -e —nodeps 软件包 卸载rpm时不检测依赖
23.1.3. 安装
rpm -ivh 软件包名
23.2. yum
yum [选项] [参数]
选项: -y 对所有提问都回答yes
参数: install 安装、update 更新、check-update 检测是否有可用更新、remove 删除指定包、list 显示软件包信息、clean清理yum过期缓存、deplist显示yum软件包所有依赖更新
如安装mysql:
- 检测是否安装了mysql:rpm -qa | grep mysql
- 下载mysql的repo源 wget http…..下载地址
- rpm -ivh mysql软件包名
- yum install 软件
24. shutdown
shutdown 默认为1分钟关机
shutdown -c 取消关机
shutdown -h now 立刻关机
shutdown -r 重启
reboot