前言
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
查看目录各个字段含义
第一字段:首字母代表的是文件类型 ,其中"-"为普通文件、"d"为目录文件、"c"为字符设备文件、"b"为块设备文件、"p"为管道文件、"l"为链接文件、"s"为socket文件。“rwx”分别代表拥有读、写和执行权限,"-代表无对应权限。三个"rwx"依次代表文件所有者、文件所有者所在用户组、其它用户对文件拥有的权限。
第二字段:文件硬连接数量
第三字段:文件拥有者
第四字段:文件拥有者所在组
第五字段:文件大小(以字节为单位)
第六字段:文件最后更改时间
第七字段:文件名(若为链接文件则追加显示其链接的原文件的路径)
ls命令其它参数含义:
-a显示隐藏文件(.开头的文件)
-r逆序排序
-t按照时间顺序显示
-R递归显示ls -lartR
: 按照时间顺序倒序显示所有文件及其文件夹的文件
cd命令:更改当前的工作目录cd /path/...
绝对路径cd ./path/...
相对路径(./可以省略)cd ../path/...
相对路径
mkdir命令:建立目录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指定操作类型为文件
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文件
/etc/shadow
1、账户名称
2、加密后的密码,如果这一栏的第一个字符为!或者*的话,说明这是一个不能登录的账户,从上面可以看出,ubuntu默认的就不启用root账户。
/etc/group
文件类型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软件包格式:
-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命令
查看内存剩余的时候要看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文件
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。