前言

Linux基础命令整理,这里不包含shell部分知识

基础命令

shell(命令解释器)自带的命令称为内部命令,其它的是外部命令
内部命令使用help帮助:help cd
外部命令使用help帮助:ls --help
type命令:用于区分是内部命令还是外部命令:

#type ls
ls is aliased to `ls --color=auto' #外部命令
#type cd
cd is a shell builtin #内部命令

pwd命令:显示当前目录
ls命令:查看目录和文件名称
ls -l 查看目录各个字段含义
企业微信截图_20200502163153.png

第一字段:首字母代表的是文件类型 ,其中"-"为普通文件、"d"为目录文件、"c"为字符设备文件、"b"为块设备文件、"p"为管道文件、"l"为链接文件、"s"为socket文件。“rwx”分别代表拥有读、写和执行权限,"-代表无对应权限。三个"rwx"依次代表文件所有者、文件所有者所在用户组、其它用户对文件拥有的权限。
第二字段:文件硬连接数量
第三字段:文件拥有者
第四字段:文件拥有者所在组
第五字段:文件大小(以字节为单位)
第六字段:文件最后更改时间
第七字段:文件名(若为链接文件则追加显示其链接的原文件的路径)

ls命令其它参数含义:
-a显示隐藏文件(.开头的文件)
-r逆序排序
-t按照时间顺序显示
-R递归显示
ls -lartR : 按照时间顺序倒序显示所有文件及其文件夹的文件

cd命令:更改当前的工作目录
cd /path/... 绝对路径
cd ./path/... 相对路径(./可以省略)
cd ../path/... 相对路径

mkdir命令:建立目录
企业微信截图_20200502165701.png
mkdir -p 递归目录:递归创建目录

rmdir命令:删除目录
rmdir a/b/c/d/e/ #删除空目录
rm -r a/b/c/d/ #递归删除目录,但是系统会做多次询问
rm -rf a/b/c/d/ #删除目录,不做任何询问

cp命令:复制文件和目录
-r 复制目录
-p 保留用户、权限、时间等文件属性

mv命令:移动文件和重命名
mv *.log 目标目录

通配符:
*匹配任何字符串
?匹配一个字符串
[xyz]任何一个字符串
[a-z]匹配一个范围

cat命令:文本内容显示到终端

head命令:查看文件开头
head -3 文件名称 #显示文件开头3行

tail命令:查看文件末尾
tail -3 文件名称 #显示文件末尾3行
tail常用参数-f,文件内容更新后,同步显示更新的文件信息
tail -f 文件名称

wc命令:统计文件内容信息
wc 文件名称

压缩和解压缩

tar打包命令(只有打包功能,并不具备压缩功能)
压缩命令是gzip和bzip2,bzip2压缩的文件更小,但是速度比较慢
-c 打包
-x解包
-f指定操作类型为文件
企业微信截图_20200502183326.png

tar cf ./etc-backup.tar /etc 
tar czf ./etc-backup.tar.gz /etc
tar cjf ./etc-backup.tar.bz2 /etc

tar xf ./etc-backup.tar
tar xzf ./etc-backup.tar.gz 
tar xjf ./etc-backup.tar.bz2 

vi命令

vi命令的三种模式
命令模式:命令模式是vim打开文件后默认进入的模式,可以进行文件的快速定位,文件的处理操作
插入模式:编辑文件
行模式:文件的保存退出

命令模式操作
输入i键:光标当前位置输入
输入I键:光标当前行开头位置输入
输入a键:光标当前下个字符位置输入
输入A键:光标当前行末尾位置输入
输入o键:光标当前行下一行新建空行位置输入
输入O键:光标当前行上一行新建空行位置输入
hjkl:方向键盘,上右下左移动光标,注意终端的上下左右键有可能会乱码
yy:复制当前行
p:粘贴复制的内容
3yy:复制当前行开头的连续3行
y$:光标当前位置复制到光标当前行末尾
dd:剪切当前行
d$:剪切光标当前位置至本行末尾
u:撤销键
ctrl+r:重做键盘
G:光标快速切换到哪一行。例如 :11G 光标会切换到11行
^:光标快速切换到当前行行首
$:光标快速切换到当前行末尾

末行模式操作:
:w 保存
:q 退出编辑
:wq 保存并且退出编辑
:q! 不保存退出
/要查找的内容:全局查找内容,n查找的内容下一次位置,N查找的内容上一次位置
:s/原来的内容/要替换的内容:只在当前行内容替换生效
:%s/原来的内容/要替换的内容/g:所有内容都替换生效
:11,15s/原来的内容/要替换的内容:11,15行内容替换生效
:set nu 设置显示行号
:set nonu 设置不显示行号

配置/etc/virc
设置默认使用vi命令就显示行号的办法:
1、vi /etc/virc
2、在文件最后一行添加:set nu 并且保存退出

用户管理和组管理

useradd命令:新建用户
useradd 用户名

userdel命令:删除用户
userdel 用户名 用户所在的家目录不会被删除
userdel -r 用户名 用户相关的所有配置都会被删除

passwd命令:修改用户密码
passwd 用户名

usermod命令:修改用户属性

/etc/passwd文件:查看用户文件
tail /etc/passwd

/etc/shadow文件:查看用户密码
tail /etc/shadow

groupadd命令:添加用户组
groupadd 用户组

groupdel命令:删除用户组
groupdel 用户组

用户切换
su 用户名 切换用户,但是用户所在环境不变,即pwd路径不会变化
su - 用户名 切换用户,同时会切换到用户家目录,即/home/用户名

sudo命令:普通用户需要执行root用户权限的解决方案

用户和用户组配置文件介绍
/etc/passwd文件
企业微信截图_20200503090734.png

/etc/shadow
1、账户名称
2、加密后的密码,如果这一栏的第一个字符为!或者*的话,说明这是一个不能登录的账户,从上面可以看出,ubuntu默认的就不启用root账户。

/etc/group
企业微信截图_20200503091650.png

文件类型
ls -l查看文件类型
-普通字符
d目录文件
b块特殊文件
c字符特殊文件
l符号链接
f命名管道
s套接字文件

文件权限表示法
r读(数字4)、w写(数字2)、x执行(数字1)

目录权限表示法
x进入目录
rx显示目录内的文件名
wx修改目录内的文件名

chmod命令:修改文件权限
用字符的方式添加和修改权限
u:修改用户权限
g:修改用户组权限
o:修改其它用户权限
+:添加权限
-:减少权限
=:设置权限
chmod u+r aaa.log #给aaa.log文件的所属用户添加读的权限

用数字的方式添加权限
chmod 666 aaa.log #给aaa.log文件设置读写权限
需要注意的是不过root用户的权限是什么都不会受到影响

chown命令:更改属主,属组
chown 用户名 文件名
chown 用户名:组名 文件名

网络配置命令

配置ip地址
eth0表示第一块网卡,网卡的名称还可能是eno1(板载网卡)、ens33(PEC-E网卡)、enp0s3(无线PEC-E网卡)
ifconfig 接口 ip地址 [netmask 子网掩码] #配置IP地址
ifup 接口 #开启网卡
ifdown 接口 #关闭网卡

添加网关
route add default gw 网关ip
route add -host 指定ip gw 网关ip
route add -net 网段 netmask 子网掩码 gw 网关ip 案例:route add -net 192.168.0.0 netmask 255.255.255.0 gw 10.1.1.1

检查网络
ping命令 #查看网络是否通
traceroute命令 #网络不好的时候分析网络哪个部分出现问题
mt命令r #网络不好的时候分析网络哪个部分出现问题
nslookup命令 根据域名解析获取ip

网络没问题后分析服务
telnet 域名 端口(端口关闭Connection refused和端口开启Connected to ...)
tcpdump命令 #抓取网卡的传输数据(即抓包的作用)
netstat命令 #查看本地网络服务

hostname命令 #查看和修改主机名称
hostname 新的主机名(注意修改/etc/hosts文件配置127.0.0.1 主机名)

配置网卡信息
网卡文件位置:/etc/sysconfig/network-scripts/ifcfg-eth0
ONBOOT=yes 开机自启动配置
BOOTPROTO=dhcp 动态获取ip地址

软件包管理

包管理器是方便软件安装、卸载、解决软件依赖关系的重要工具
centos、Redhat使用yum包管理器,软件安装包格式rpm
debian、ubuntu使用apt包管理器,软件安装包格式为deb

rpm软件包和命令

rpm软件包格式:
企业微信截图_20200503184650.png

-q 查询软件包
rpm -q 安装包名称(不需要全名称) #查询单个软件包
rpm -qa #查询所有安装包

-i 安装软件包
rpm -i 软件包的全名称

-e 卸载软件包
rpm -e 安装包名称(不需要全名称)

yum安装软件包

rpm安装软件包的时候经常会出现依赖包找不到的情况,需要手动解决依赖的安装包,比较麻烦,这个时候使用yum安装更加合适,它能自动解决依赖的软件包
阿里云rpm镜像网址和使用
yum常用参数
yum install 软件包名称
yum remove 软件包名称
yum list 查看安装的软件包
yum update 软件包名称

源代码安装软件

有的时候我们需要安装软件的最新版本,这个时候yum库可能没有最新的,就需要手动编译软件源代码安装软件,并且需要自己去解决编译源码时各种各样的依赖
第一步: ./configure --prefix = /usr/local/软件名称
第二步:make (有的时候看到gmake -j2,gmake指的是跨平台的方式安装,-j2指的是用连个cpu来进行编译,加快编译速度)
第三步:make install (安装软件到--prefix指定目录,好处是删除软件的时候删除整个包就可以,否则还需要到/usr/bin等各个目录下删除一堆文件)

进程管理

查看命令
ps -ef #查看进程
pstree #查看进程树
top命令
top下按1可以查看各块cpu(多核情况)的资源使用情况;
top -p 进程id #单独查看进程的资源使用情况

调整进程优先级
nice范围从-20到19,值越小优先级越高,抢占资源就越多
nice -n 10 脚本名称
renice重新设置已经运行的程序优先级
renice -n 15 进程id

进程作业控制
&符号,让进程在后台运行
jobs 查看后台运行的进程
根据jobs第一列的结果fg [序号],能够将后台进程移到前台

kill命令
kill -l #列出进程相关的所有信号类型
ctrl + c #通知前台进程终止进程
kill -9 进程id #立即结束进程

nohup与&符号配合使进程在退出终端后能够继续运行
守护进程指的是系统开机自启动的相关进程,可以通过/proc/进程id/目录查看进程运行详细信息,通过/var/log目录下的日志文件查看更多的进程运行信息,messages系统日志信息,secure日志信息,cron定时任务信息
screen可以使进程在断开网络的情况下,恢复后依然能够继续执行
进程管理工具service(配置文件路径/etc/init.d)和systemctl(service的进化版)

内存和磁盘管理

top命令
企业微信截图_20200504135155.png
查看内存剩余的时候要看free内存,不能看buffers,因为有些程序比如jar程序会占用很大内存作为缓存,可以通过命令释放掉这部分缓存;当程序开始使用Swap的时候就得考虑内存是否足够的问题,当内存不足的时候系统会随机杀掉占用内存大的进程,导致不可控;

free命令
free -m #使用M作为单位查看内存,注意如果使用free -g查看内存会偏小,系统会把不足的g内存显示的时候删除掉

查看磁盘
查询系统整体磁盘使用情况
df -h
查询指定目录的磁盘占用情况
du -h /目录 #默认为当前目录
-s 指定目录占用大小汇总
-h 带计量单位
-a 含文件
--max-depth=1 子目录深度
-c 列出明细的同时,增加汇总值

增加一块硬盘步骤:
1、添加硬盘
2、分区fdisk:fdisk /dev/sdb (假设新增的磁盘名称为sdb)
3、格式化mkfs:mkfs -t ext4 /dev/sdb1
4、挂载目录:先创建一个/newdisk挂在目录 , 挂载mount /dev/sdb1 /newdisk
5、设置可以永久挂载: 修改/etc/fstab文件


吴小风
24 声望1 粉丝