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() 返回字符长度
    1. 'BEGIN{初始化操作}
    2. {每行都执行}
    3. END{结束时操作}'
    4. 文件名

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 删除一个词

01. Linux - 图1

13. iptables

  1. netstat -tnl #查看服务器目前开放端口
  2. iptables -I INPUT -p tcp --dport 8000 -j ACCEPT #开启8000端口
  3. iptables -L -n -v #查看已添加的iptables规则 查询编号id
  4. iptables -D INPUT 编号id #删除指定编码的规则
  5. iptables -F #一键清空所有规则
  6. iptables -A INPUT -p tcp --dport 80 -j DROP #封指定的端口

14. 开放端口

  1. firewall-cmd --zone=public --add-port=8888/tcp --permanent
  2. # 命令含义:
  3. --zone #作用域
  4. --add-port=1935/tcp #添加端口,格式为:端口/通讯协议
  5. --permanent #永久生效,没有此参数重启后失效
  6. #重启
  7. firewall-cmd --reload
  1. # 查询端口是否开放
  2. firewall-cmd --query-port=8080/tcp
  3. # 开放80端口
  4. firewall-cmd --permanent --add-port=80/tcp
  5. # 移除端口
  6. firewall-cmd --permanent --remove-port=8080/tcp
  7. #重启防火墙(修改配置后要重启防火墙)
  8. firewall-cmd --reload #ubuntu 我干要重启
  9. service iptables stop #停止

开放所有端口

  1. iptables -P INPUT ACCEPT
  2. iptables -P FORWARD ACCEPT
  3. iptables -P OUTPUT ACCEPT
  4. iptables -F
  5. iptables-save
  6. #建议删除 iptables
  7. 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

01. Linux - 图2

可以看到只有一个sda1分区装载/boot,还有一个扩展分区

查看dev下的硬盘:

01. Linux - 图3

只有一个硬盘(两个分区)

注意:

如果你是IDE 接 口 硬 盘 :/dev/dh[a-z],这里的硬盘名字应该是dh[a-z]开头

如果你是SCSI 接 口 硬 盘 : / dev/[ a -z ],这里的硬盘名字应该是sd[a-z]开头

接下来将进行另一块硬盘的安装:

1.将硬盘装在电脑上,重启电脑,后查看/dev/ 下有没多了一块硬盘

01. Linux - 图4

01. Linux - 图5

2.用fdisk对这块硬盘分区

fdisk /dev/sdb

01. Linux - 图6

按下m显示菜单:

01. Linux - 图7

因为要新建分区选择n

01. Linux - 图8

这里是问你是要建立主分区还是扩展分区,这里是第一次建立选择主分区p

01. Linux - 图9

因为是MBR分区只能有4个分区,这里建立第一个分区,输入1

01. Linux - 图10

这里问你个分区的起始扇区,这里直接回车(默认),相当于输入了2048

01. Linux - 图11

这里问你的结束扇区,这里不需要计算,直接输入+1G 加号后面为这个分区的大小

01. Linux - 图12

此时第一个分区已经建立,但还是在内存中并没有写到硬盘sdb中,所以直接输入w

注意这里可以继续创建分区,完了再输入w,我这里只建立一个分区

01. Linux - 图13

经过以上步骤后分区的建立已经完成,但是此时系统还无法识别分区表

3.内核重新读取分区表

partprobe /dev/sdb

01. Linux - 图14

注意:这里是整个磁盘sdb,不是磁盘分区sdb1

4.创建文件系统(格式化分区)

Linux 中的主流的文件系统有:ext4和xfsd等

01. Linux - 图15

这里我建立ext4文件系统

mkfs.ext4 /dev/sdb1

注意:这里是磁盘分区sdb1,不是整个磁盘sdb

01. Linux - 图16

5.挂载

在挂载之前你需要确定挂载的目录,我这里是/mnt/sdb1-zhi  ,没有目录的自己mkdir,这里目录最好建立在/mnt下,这个目录是专门挂载的,可以任意。

将来这个分区就会与这个/mnt/sdb1-zhi目录建立联系

手动挂载

mount /dev/sdb1 /mnt/sdb1-zhi/

01. Linux - 图17

df一下:

01. Linux - 图18

这里已经挂载成功,但是这只是一次性的,重启后就会消失

永久挂载:

要对/etc/fstab文件编辑

vim /etc/fstab

01. Linux - 图19

比如第一行中

  1.  硬盘路径                         文件路径(挂载点)    文件系统类型    设备的自定义选项  是否转存  fsck的顺序
  1.  /dev/mapper/CentOS-root                   /  xfs         defaults 0      0
  1.  UUID=e4ef36e1-0840-4a58-a4f7-c26f52ead6f1         /boot         xfs         defaults     0      0
  1. 我们要在最后一行写入自己的分区与文件路径,可以仿照上面的写
  1.   /dev/sdb1                         /mnt/sdb1-zhi      ext4         defaults     0      0

01. Linux - 图20

这里第一列也可以写入UUID

UUID的查询:

blkid

01. Linux - 图21

转存:0 不转存,不备份  1转存,备份

fsck:开机检查磁盘的顺序  0表示不检查  1234….为检查顺序

以上步骤完成后,还需要判断是否正确

mount -a

01. Linux - 图22

如果没有其他信息出现,表示你插入的正确,否则错误。

如果错误且没有检查,开机后将进入紧急模式,无法开机

最后开机重启后df一下,看看是否正常

01. Linux - 图23

最后总结一下

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

  1. tar -zxvf xxx.tar.gz -C ./*

备份 /home, /etc ,但不要 /home/dmtsai

  1. tar --exclude /home/dmtsai -zcvf myfile.tar.gz /home/* /etc

在 /home 当中,比 2010/06/01 新的文件才备份

  1. 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. * 执行的任务

01. Linux - 图24

    • 一小时当中的第几分钟 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分钟执行一次

  1. 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:

  1. 检测是否安装了mysql:rpm -qa | grep mysql
  2. 下载mysql的repo源 wget http…..下载地址
  3. rpm -ivh mysql软件包名
  4. yum install 软件

24. shutdown

shutdown 默认为1分钟关机

shutdown -c 取消关机

shutdown -h now 立刻关机

shutdown -r 重启

reboot