最近复习了一下linux基础,用的是centos8,顺便记了一下笔记,笔记内容可能写得不是那么系统完整,写成博客出来也主要是当自己学习的一个打卡自嗨 ,希望能以写博客的形式来激励自己持续、努力地学习,所以如果是想学习相关知识的朋友可以再看看其他大佬们写的博客吧[笑哭]
帮助命令
功能 | 指令 | 备注 |
---|---|---|
查看指令的使用方法 | man 指令 | 其实以下的指令都可以通过这个指令查看更加详细的使用指南 help 指令 |
重启网络服务
nmcli c reload
关机重启命令
关机前最好先执行sync命令,sync命令能把内存内的数据存盘
功能 | 指令 | 备注 |
---|---|---|
把内存数据存盘 | sync | 最好在重启或关机的时候执行一次 |
关机 | shutdown -h {now/n} | now表示立即关机,n表示n分钟后关机 |
重启 | shutdown -r {now/n}/ reboot |
管理用户
功能 | 指令 | 备注 |
---|---|---|
添加新用户 | useradd hehe | 创建hehe用户,并自动在home目录下生成hehe目录 |
添加新用户并指定组 | useradd -g mygroup hehe | 创建hehe用户,并将它放在mygroup组中,注意得先创建好mygroup这个组 |
指定/修改密码 | passwd hehe | 不指定用户名就是修改当前用户的密码 |
删除用户 | userdel (-r) hehe | 带-r用户的家目录也会删除,不带的话保留家目录 |
查看当前用户 | whoami | |
查看当前用户的具体信息 | id hehe | 可查看hehe的uid,gid和所在组 |
切换当前用户的组 | usermod -g mygroup hehe | 把hehe用户切换到mygroup组下 |
切换成上一个用户 | exit |
组管理
功能 | 指令 | 备注 |
---|---|---|
添加组 | groupadd | |
删除组 | groupdel |
权限管理
功能 | 指令 | 备注 |
---|---|---|
修改文件所有者 | chown {用户名} {文件名} | chown -R RR aa/ 把aa目录下的所有文件和目录的所有者改为RR |
修改文件所在组 | chgrp {用户名} {文件名} | 也有-R |
修改用户所在组 | usermod -g {组名} {用户名} | 这个用户的所有文件的组也会自动修改 |
修改文件或目录权限 | chmod | u:所有者 g:所在组的用户 o:其他组的用户 a:所有用户 chmod a+r a 为所有用户增加读权限到a文件上 chmod 777 a给所有者,所在组用户,其他组用户增加a文件读写执行权限 chmod u=rwx,g=r,o=x a 按要求给a文件对对应人增加权限 |
[RR@localhost Desktop]$ ls -l
total 4
-rw-rw-r--. 1 root RR 0 Jun 26 15:01 a
drwxrwxr-x. 2 RR RR 24 Jun 26 15:08 aaa
-rw-rw-r--. 1 RR RR 0 Jun 26 15:01 b
-rw-rw-r--. 1 RR RR 120 Jun 26 15:01 t.tar.gz
左边的一串字符中,第一个表示文件类型
- -表示普通文件
- d表示目录
- l表示软链接
- c表示字符设备
- b表示块文件
后面9个字符,三个一组 rwx分别表示读、写、执行权限
rwx权限 | - |
---|---|
作用在文件上 | |
r | 可以读取,查看文件 |
w | 可以修改,但不代表可以删除 |
x | 可以执行 |
作用在目录上 | |
r | 可以读取,即用ls查看目录内容 |
w | 可以修改,即可以在目录下创建、删除、修改文件/目录 |
x | 可以执行,即可以进入目录 |
第一组表示文件所有者的权限
第二组表示文件所在组的用户的权限
第三组表示其他组的用户的权限
权限后面的数字,如果是普通文件表示硬链接数,如果是目录表示子目录数
接下去的是所有都,后面是所在组,再后面是文件大小(字节),然后是文件最后修改时间
文件目录类
功能 | 指令 | 常用选项/备注 |
---|---|---|
显示当前路径的绝对路径 | pwd | |
以树状结构显示当前目录的结构 | tree | |
查看目录或文件内容 | ls {选项} {文件名} | -l 以列表的形式显示内容 -a显示所有文件包括隐藏文件 |
切换路径 | cd | |
创建目录 | mkdir {选项} {文件名} | -p创建多级目录 |
删除目录 | rmdir {文件名} | 一般用rm指令多一点 |
创建文件 | touch {文件名} | 可创建多个文件,中间用空格隔开 |
复制文件 ,覆盖前询问 | cp {选项} {源} {目的} | -r 递归复制文件夹下面的内容 |
复制文件,覆盖不询问 | /cp {选项} {源} {目的} | 源和目的如果一样,可以当重命名使用 |
移动文件 | mv {选项} {文件名} | |
删除文件 | rm {选项} {文件名} | -r 递归删除目录下的内容 -f 强制删除不提示 |
查看文件 | cat -n {文件名} | more | -n 显示行号 ,| more 以管道的形式显示,部分快捷键如下: 空格 下一页 回车 下一行 = 输出当前页最后一行的行号 q 退出 |
输出重定向 | > | 能把东西写到文件中去,如果文件内有内容会覆盖,举个栗子 ls -l > 1.txt cat 1.txt > 2.txt echo “内容” > 1.txt |
追加 | >> | 把内容追加到文件中去,用法同上 |
把内容显示到控制台上 | echo “内容” | 也可用来查看环境变量之类的 echo $PATH |
把文件内容头10行的内容显示出来 | head {-4} {文件名} | 通过 -加数字可指定显示多少行 |
把文件内容尾10行显示出来 | tail {-4} {文件名} | -f 可实时监控文件的内容变化 |
软链接,类似windows下的快捷方式 | ln -s {源文件} {新文件} | 为源文件创建一个新文件,当使用这个新文件的时候,它会自动追寻并使用源文件 |
查看历史执行指令 | history | 默认查看全部指令 history 10 查看最近10条指令 |
执行历史操作指令 | !指令的号数 | 指令的号数可通过history来查看 |
时间日期类
功能 | 指令 | 备注 |
---|---|---|
显示日历 | cal | cal 2020 显示2020年的日历,默认只显示当前月份日历 |
显示日期 | date | date +%Y-%m-%d-%H-%M-%S 显示年月日时分秒,+号不可省略的,中间的-可以修改 |
搜索查找类
功能 | 指令 | 备注 |
---|---|---|
查找文件 | find {查找范围} {选项} {查找内容} | 查找范围处可指定一个目录,它会从指定的目录开始遍历他下面的其他子目录及文件,查找目标文件 -name 按名字查找 -user 按用户查找 -size 按文件大小查找 +n大于n,-n小于n,n等于n |
查找文件(速度快) | locate {查找内容} | 通过数据库查找文件,因此第一次执行要先执行一次updatedb指令,没有及时更新数据库,可能查找出已经删除了的文件路径 |
过滤查找 | grep | -n 显示行号 -i 不区分大小写 |
管道符号 | | | 能将前面指令获得的内容给后面的指令进行操作 cat a | grep -ni w 查找a文本中包含w(不区分大小写)的行,并显示行号 |
压缩解压类
功能 | 指令 | 备注 |
---|---|---|
压缩文件 | gzip {文件名} | 把文件打成包,即在原文件上加上.gz后缀 |
解压文件 | gunzip {文件名} | 把文件解压出来,即在原文件上去掉.gz后缀 |
- | - | - |
压缩文件 | zip {选项} {包名.zip} {文件名/路径名} | -r 递归压缩,后面要传入一个目录,将目录下的所有内容打包 |
解压文件 | unzip -d {目录} {包名.zip} | 把包解压到指定目录 |
- | - | - |
打包文件 | tar {选项} {文件名.tar.gz} {要打包的内容} | -c 产生.tar打包文件 -v 显示详细信息 -f 指定压缩后的文件名 -z 打包同时压缩 -x 解压.tar文件 将当前目录下的a b两个文件打包 tar -zcvf t.tar.gz a b 把包解压到当前目录tar -zxvf t.tar.gz 把文件解压到指定目录 tar -zxvf t.tar.gz -C 目录 |
crond任务调度
功能 | 指令 | 备注 |
---|---|---|
任务调度 | crontab | -e 编辑定时任务 -l 查询任务 -r 删除所有任务 |
crontab -e 进入编辑页面编写定时任务(如果任务较为复杂需要使用shell编程.sh格式,sh文件必须给所有者加上执行权限)
百度查cron会有在线生成定时任务的代码的网站
* * * * * ls -l /home/RR/Desktop>a
#每分钟每小时每天第号第个星期一到日都将Desktop下的目录信息写入到a文件中去
*/1 * * * * /home/RR/a.sh
5个*对应的含义
- 一个小时中的第几分钟 0-59
- 一天中的第几个小时 0-23
- 一个月中的第几天 1-31
- 一年当中的第几月 1-12
- 一周当时的星期几 0-7 07都是星期日
每个占位符的特殊用法
- * 表示任何时间
- ,多个不连续的时间,中间用逗号隔开
- - 表示连续的时间范围
- */n 每隔多少个时间间隔执行一次
Linux分区
#查看分区和挂载情况
lsblk -f
[RR@localhost Desktop]$ lsblk -f
NAME FSTYPE LABEL UUID MOUNTPOINT
sda
├─sda1 ext4 04536ec1-362a-4bbd-a3e3-34bcf08b5994 /boot
└─sda2 LVM2_member lNrSdN-4Mm2-DCei-be8h-e93v-1DJp-8o6eGx
├─cl-root xfs 09dfb73e-bab4-424c-b8f5-80b323e8b353 /
└─cl-swap swap be865f5a-a0e0-40ab-8db4-563296211b64 [SWAP]
- NAME 分区情况
- FSTYPE 分区类型
- UUID 识别分区的id
- MOUNTPOINT 挂载点
添加一块硬盘
- virtual添加一块硬盘
- 分区 fdisk/dev/sdb
- 格式化 mkfs -t ext4 /dev/sdb1
- 挂载 先创建一个 /home/newdisk,挂载mount /dev/sdb1 /home/newdisk
- 设置可以自动挂载(永久挂载,重启会自动挂载)
vim /etc/fstab
/dev/sdb1 /home/newdisk ext4 defaults 0 0
磁盘情况查询
[RR@localhost ~]$ df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 899M 0 899M 0% /dev
tmpfs 915M 0 915M 0% /dev/shm
tmpfs 915M 9.1M 906M 1% /run
tmpfs 915M 0 915M 0% /sys/fs/cgroup
/dev/mapper/cl-root 27G 5.0G 22G 19% /
/dev/sda1 976M 197M 713M 22% /boot
tmpfs 183M 16K 183M 1% /run/user/42
tmpfs 183M 4.0K 183M 1% /run/user/1000
查询指定目录的磁盘占用情况
[RR@localhost ~]$ du -h /home/RR/Desktop/
12K /home/RR/Desktop/
# -s 指定目录占用大小汇总
# -h 带计量单位
# -a 含文件
# --max-depth=1 子目录深度
统计目录下有多少个文件,不包含目录
[RR@localhost Desktop]$ ls -l | grep "^-" | wc -l
3
# grep "^-" 找出以-开头的文件(文件用ls -l执行第一个字符就是-,如果是目录第一个字符是d)
# wc (word count) 统计
进程相关
功能 | 指令 | 备注 |
---|---|---|
显示系统执行进程 | ps -aux ps -ef | -a 显示所有进程 -u 以用户格式显示进程信息 -x 显示后台进程运行的参数 -f 显示全格式 -e 显示用户所有进程 |
通过进程号删除进程 | kill {选项} {进程号} | -9 强制停止进程 |
通过进程名称删除进程 | killall {进程名称} | 支持通配符 |
查看进程树 | pstree {选项} | -p 显示进程pid -u 显示进程所属用户 |
动态查看进程 | top {选项} | -d 10 每10秒刷新一次信息 top进入后 u查看指定用户进程 k选择要kill的进程 P按cpu占用排序 N按进程号排序 M按内存使用情况排序 |
查看系统网络情况 | netstat {选项} | -an 按一定顺序排序 -p 显示哪个进程在使用 |
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.1 0.7 179216 14044 ? Ss 12:46 0:03 /usr/lib/systemd/s
ystemd --switched-root --system --deserialize 17
root 2 0.0 0.0 0 0 ? S 12:46 0:00 [kthreadd]
root 3 0.0 0.0 0 0 ? I< 12:46 0:00 [rcu_gp]
# USER:用户名称
# PID:进程号
# %CPU:进程占用CPU的百分比
# &MEM:进程占用物理内存的百分比
# VSZ:进程占用的虚拟内存大小(KB)
# RSS:进程占用的物理内存大小(KB)
# TT:终端
# STAT:进程状态,S睡眠,s会话先导进程,N进程有比普通优先级更低的优先级,R正在运行,D短期等待,Z僵死进程,T被忠恕上或者被停止
#START:进程的启动时间
#TIME:CPU时间,即进程使用的CPU总时间
#COMMAND:启动进程所用的命令和参数,命令过长会截断显示
[RR@localhost ~]$ ps -ef
UID PID PPID C STIME TTY TIME CMD
root 1 0 0 12:46 ? 00:00:03 /usr/lib/systemd/systemd --switched
root 2 0 0 12:46 ? 00:00:00 [kthreadd]
root 3 2 0 12:46 ? 00:00:00 [rcu_gp]
# PPID:你进程id
# C:cpu用于计算执行优先级的因子,数值越大,执行优先级降低
# STIME:进程启动的时间
# TTY:完整的终端名称
# TIME:cpu时间
# CMD:启动进程所用的命令和参数
服务相关
功能 | 指令 | 备注 |
---|---|---|
管理服务 | systemctl {选项} {服务名} | start 启动 stop 停止 restart 重启 reload 重载 status 状态 查看防火墙状态 systemctl status firewalld |
查看服务 | systemctl list-unit-files |
包管理相关
功能 | 指令 | 备注 |
---|---|---|
查看已安装rpm(rpm相当于windows下的exe) | rpm -qa | grep xxx | -qa(quary all) |
查看软件安装包是否安装 | rpm -q {软件名} | |
查看软件包里有哪些文件 | rpm -ql {软件名} | |
查看哪个文件属于哪个软件包 | rpm -qf {文件名} | |
删除rpm包 | rpm -e (–nodeps) rpm包名称 | 如果有别的包依赖于它,则删除会报错,可以加上–nodeps强制删除 |
安装rpm包 | rpm -ivh {rpm包全路径名称0} | -i 安装 -v 提示 -h 进度条 |
rpm(RedHat Package Manager)一种用于互联网下载包的打包及安装工具
yum相关
yum是一个shell前端软件包管理器,基于rpm包管理,能够从指定的服务器自动下载rpm包并安装,可以自动处理依赖关系,并一次安装所有依赖的软件包
功能 | 指令 | 备注 |
---|---|---|
查看软件列表 | yum list | grep xxx | |
安装 | yum install xxx |