文末有下载链接
个人笔记
绝对路径:路径的写法,由根目录 / 写起,例如:/usr/share/doc 这个目录。
相对路径:路径的写法,不是由 / 写起,例如由/usr/share/doc 要到 /usr/share/man 底下时,可以写成: cd ../man 这就是相对路径的写法。
ls 查看当前目录下的文件夹以及文件
ls -a 列出当前目录下全部的文件,连同隐藏文件( 开头为 . 的文件) 一起列出来(常用)
ls -d 仅列出目录本身,而不是列出目录内的文件数据(常用)
ls -l 长数据串列出,包含文件的属性与权限等等数据(或者写作“ll”)
ls -al 将当前目录下的所有文件列出来(含属性与隐藏档)
cd 切换目录
cd .. 返回上一级目录
cd ../.. 返回上两级目录
cd或cd ~ 返回home目录
cd - 目录名 返回指定目录
pwd 显示当前所在的目录
mkdir 创建一个新的目录(即使将命令写“mkdir duanhuijie.txt”创建的同样是一个文件夹,只不过文件夹名字为:duanhuijie.txt)
mkdir -p 直接将所需要的目录(包含上一级目录)递归创建起来!
touch 创建文件
rmdir 删除一个空的目录(只可以删除空目录,若目录中有文件,比如txt文件,则删除失败。如果“duanhuijie”目录中有一个名为“123”的目录,且123目录为空目录,则“duanhuijie”目录同样可以用rmdir命令删除)。
rmdir -p 递归删除目录
rm 删除文件
rm -f 强制删除文件
rm -rf 删除文件夹(包括非空文件夹)
cp 复制文件或者目录
cp aa.txt duanhuijie
代码释义:拷贝文件aa.txt到duanhuijie文件夹
mv 文件或者目录的移动或改名
语法为:mv [参数] 源文件或目录 目标文件或目录
mv -f 强制移动如果目标文件已经存在,不会询问而直接覆盖
mv -I 若目标文件 (destination) 已经存在时,就会询问是否覆盖!
mv -u 若目标文件已经存在,且 source 比较新,才会升级 (update)
man [某命令] man命令是Linux下的帮助指令,通过man指令可以查看Linux中的指令帮助、配置文件帮助和编程帮助等信息。列出命令的帮助手册。
按q退出帮助程序。
图略
cat a.txt 显示a.txt文件中的内容(包括空格)
cat -b a.txt 显示a.txt的内容以及行号,空行不显示行号。
cat -n b.txt 显示b.txt的内容以及行号,空行也显示行号。
cat -E b.txt 将结尾的断行字节 $ 显示出来
cat > a.txt 编辑文本文档。覆盖编辑,不可退格(若敲击退格键则显示“^H^H^H”)。Ctrl+D结束命令
cat >> a.txt 编辑文本文档。追加编辑,不可退格(若敲击退格键则显示“^H^H^H”)。Ctrl+D结束命令
cat <<eof> a.txt 编辑文本文档。覆盖编辑,可退格。最后一行敲击出eof按回车结束命令。若按Ctrl+C强制结束命令,但是原文件不做更改。
cat <<eof>> a.txt 编辑文本文档。追加编辑,可退格。最后一行敲击出eof按回车结束命令。若按Ctrl+C强制结束命令,但是原文件不做更改。
cat <<end> a.txt 编辑文本文档。覆盖编辑,可退格。最后一行敲击出end按回车结束命令。若按Ctrl+C强制结束命令,但是原文件不做更改。
cat <<end>> a.txt 编辑文本文档。追加编辑,可退格。最后一行敲击出end按回车结束命令。若按Ctrl+C强制结束命令,但是原文件不做更改。
cat a.txt > b.txt 将a.txt文档内的内容复制覆盖粘贴到b.txt
cat a.txt >> b.txt 将a.txt文档内的内容复制追加粘贴到b.txt
tac a.txt tac与cat命令刚好相反,文件内容从最后一行开始显示,可以看出 tac 是 cat 的倒着写。
nl a.txt 显示a.txt中的内容,并且为有内容的行编号等价于cat -b a.txt
nl -n ln a.txt 显示a.txt中的内容,并且为有内容的行编号,其中序号靠左。
nl -n rn a.txt 显示a.txt中的内容,并且为有内容的行编号,其中序号靠右。
nl -n rz a.txt 显示a.txt中的内容,并且为有内容的行编号,不够位数的用0补齐。
more a.txt 显示a.txt中的内容只是显示代码默认行数的一部分,按空格翻页,按回车下一行。如果内容较多,显示不全需要结束命令则按q键即可退出命令。
more -3 a.txt 显示a.txt中的内容,规定3行为一页,按空格翻页,按回车下一行。如果内容较多,显示不全需要结束命令则按q键即可退出命令。
more -2 +3 a.txt 显示a.txt中的内容,规定2行为一页,从第3行开始显示,按空格翻页,按回车下一行。如果内容较多,显示不全需要结束命令则按q键即可退出命令。
/字串 代表在这个显示的内容当中,向下搜寻『字串』这个关键字
:f 立刻显示出档名以及目前显示的行数
b 代表往回翻页,不过这动作只对文件有用,对管线无用
less a.txt 查看a.txt的内容。
less 运行时可以输入的命令有:
空白键 :向下翻动一页;
[pagedown]:向下翻动一页;
[pageup] :向上翻动一页;
/字串 :向下搜寻『字串』的功能;
?字串 :向上搜寻『字串』的功能;
n :重复前一个搜寻 (与 / 或 ? 有关!)
N :反向的重复前一个搜寻 (与 / 或 ? 有关!)
q :离开 less 这个程序;
↑ :向上滚动一行;
↓ :向下滚动一行;
head -n 5 a.txt 显示五行a.txt文件内容。
语法:head [-n number] 文件
tail -n 5 a.txt 取出文件a.txt文件后面五行
语法:tail [-n number] 文件
选项与参数:
-n :后面接数字,代表显示几行的意思
-f :表示持续侦测后面所接的档名,要等到按下ctrl+c才会结束tail的侦测
whereis命令 用来寻找命令的可执文件所在的行位置。
whereis ls 释义:ls命令的可执行文件在哪
语法为:
-b:只查找二进制文件
-m:只查找命令的练级帮助手册部分
-s:只查找源代码文件。
whatis命令 用于获取命令简介。它从某个程序的使用手册中抽出一行简单的介绍性文件,帮助用户迅速了解这个程序的具体功能。
find命令 用于文件查找。
find a.txt 查看当前目录下名为a.txt的文件(不包括其子目录)。
find . a.txt 查看当前目录下及其子目录下的名为a.txt的文件。
find . *.c 将当前目录及其子目录下所有文件后缀为 .c 的文件列出来。
find . -type f 将当前目录及其子目录中的所有文件列出
grep命令
语法:grep [参数] 要查找的字符串 文件名
grep -c 66 b.txt 查找文件b.txt中含有66的字符有几行
grep -ci aa b.txt 查找文件b.txt中含有aa的字符有几行,(-i不区分大小写)。
grep -c ^aa b.txt 查找文件b.txt中含有aa字符开头的有几行。
grep -c aa$ b.txt 查找文件b.txt中含有aa字符结尾的有几行。
grep -c ^aa$ b.txt 查找文件b.txt中一行只有aa字符的有几行。
grep -n a b.txt 查找文件b.txt中一行含有a字符列出来,并且编号(空行也编号)。
grep -n 'aa ' b.txt 查找文件b.txt中一行含有aa (aa后面有两个空格)字符列出来,并且编号(空行也编号)。
grep常用的命令↓
-v 列出不匹配的行
-c 对匹配的行计数
-l 只显示包含匹配模式的文件名
-h 抑制包含匹配模式的文件名的显示
-n 每个匹配行只按照相对的行号显示
-i 对匹配模式不区分大小写
dd命令
dd if=/dev/zero of=file1 count=2 bs=10M 用dd命令从/dev/zero设备文件中取出2个大小为10MB的数据块,然后保存成名为file1的文件。
dmesg命令 用于实例名和物理名称来标识连到系统上的设备。dmesg命令也用于显示系统诊断信息、操作系统版本号、物理内存大小以及系其他信息。
dmesg | more 分页显示系统设备信息。管道符:“|”
free命令 主要用来查看系统的内存、虚拟内存的大小及占用情况。
date命令 用来查看系统当前的日期和时间
date -d 08/06/2018 输出指定的日期时间
cal命令 显示指定月份或年份的日历,可以带两个参数,其中,年、月份用数字表示;只有一个参数时表示年份,年份的范围为1~9999;不带任何参数的cal命令显示当前月份的日历。
cal 4 2022 显示4月的日历
cal 2022 显示2022年的日历
clock命令 用于从计算机硬件获得日期和时间
ps命令 主要用于查看系统的进程。
参数选项:
-a :显示当前控制终端的进程(包含其他用户的)。
-u :显示进程的用户名和启动时间等信息。
-w :宽行输出,不截取输出中的命令行。
-l :按长格形式显示输出。
-x :显示没用控制终端的进程。
-e :显示所有进程
-tn :显示第n个终端的进程。
ps -a 显示当前控制的终端进程,包含其他用户。
ps -u 显示进程的用户名和启动时间等信息。
ps -x 显示没用控制终端的进程。
ps -x | more -5 分页显示没用控制终端的进程,一页五行。
ps -x | grep -c add 在显示没用控制终端的进程中查找包含add的内容有几行。
ps -au 显示其他打开终端的进程。
ps -e 显示所有的进程
ps -t n 显示第n个终端的进程
另外还有:
ps -aux 显示所有包含其他使用者的行进程
ps -ef 全格式输出,类似于ls -l命令。
pidof命令 用于查询某个指定服务进程的PID值。
语法为:pidof [服务名]
pidof sshd 显示sshd进程的PID号。
ps -e | grep sshd 查询sshd的进程号并显示出来。
kill命令 “Ctrl+C”是强制结束前台进程,kill就是强制结束后台进程。
kill -l 显示kill命令所能发出的信号种类。每个信号都有一个对应的值。
kill -9 2133 杀掉进程号为2133的进程
先用pidof sshd查看sshd的进程号
然后用 kill [信号对应数值] [进程ID] 杀掉进程。
或者用 kill -9 SIGKILL [进程ID] 命令,因为9对应的信号为SIGKILL命令。
killall命令 终止某个指定的服务所对应的全部进程
killall sshd 关闭sshd所对应的全部进程
nice命令 修改进程的优先级。优先级的计算和NI值有关。NI值越大,优先级越低;反之越高。
nice -n ps -l n 其中“n”表示NI的值,正值表增大,负值表减小。
renice命令 根据进程号来改变进程的优先级。
renice n [进程号] n为修改后的NI值。
先用ps -l查看当前的进程
renice 6 2077
top命令 实时监控进程情况,默认5秒刷新一次。
top -d 1 屏幕1秒刷新一次。Q退出
jobs 命令 用于查看再后台的进程
fg命令 把后台运行的命令调到前台
bg命令 把前台的命令调到后台。
at命令 在特定的时间运行Linux命令
at now +2 minutes 从现在起,2分钟后执行某命令。
clear命令 清屏
uname命令 用于显示系统信息
shutdown命令 用于在指定时间关闭系统
shutdown [参数] 时间 [警告信息]
-r 系统关闭后重新启动
-h 关闭系统
时间是以下几种形式
now 表示立即
hh:mm 指定绝对时间,hh表示小时,mm表示分钟
+m 表示m分钟后
shutdown -r now 系统关闭后重新启动现在执行
halt命令 表示立即关闭停止系统,但是不关闭电源,需要人工关闭电源。
reboot命令 相当于“shutdown -r now“。
poweroff命令 相当于“shutdown -h now“。
alias命令 创建命令的别名
语法:alias [命令别名] = “命令行”
history命令 显示用户最近执行的命令,可以保留的历史命令数和环境变量HISTSIZE有关。只要在编号前加“!“,就可以重新运行history中显示的命令行。
wget命令 用于在终端中下载网络文件。
语法:wget [参数] 下载地址
图略
who命令 用于查看当前登入主机的用户终端信息,格式为“who [参数]“。
last命令 查看所有系统的登录记录,格式为“last [参数]“。
sosreport命令 用于手机系统配置及架构信息并输出诊断文档,格式为“sosreport“。
echo命令 用于在终端输出字符串或变量提取后的值,格式为“echo [字符串] [$变量]“。
echo ‘aaa’ > a.txt 覆盖写入a.txt文档
echo ‘aaa’ >> a.txt 追加写入a.txt文档
图略
su [用户名] 切换用户,但是环境变量信息不会变成用户的相关信息
su - [用户名] 切换用户,把环境变量信息也变为用户的相关信息
sudo命令 使普通用户调用一下root用户密码权限
图略
useradd [用户名] 创建新用户。创建完后没有密码,需要用命令设置。
useradd -d /duan duan 在根目录创建duan用户
useradd -g ai211 yonghu1 在ai211组创建yonghu1
uaseadd -c [注释内容] [用户名] 给用户添加注释内容
userdel [用户名] 删除某个指定用户
userdel -r [用户名] 删除用户sam在系统文件中(主要是/etc/passwd, /etc/shadow, /etc/group等)的记录,同时删除用户的主目录。
图略(出错了,没运行出来)
passwd [用户名] 为创建的用户设置密码(要在root用户下才可以)。
passwd [选项] [用户名]
-l 锁定口令,即禁用账号。
-u 口令解锁。
-d 使账号无口令。
-f 强迫用户下次登录时修改口令。
passwd -d Michael 使Michael 用户无需密码登录
groupadd [选项] [用户组] 创建新用户的时候如果没有规定组,默认和用户名一样创建组。
groupadd ai211 创建ai211组
useradd -g ai211 zhangsan 创建zhangsan到ai211组中。
groupmod -g 1006 ai211 修改ai211的GID为1005
groupmod -n vr211 ai211 把ai211组的组名改为vr211。
usermod -g ai211 zhangsan 把zhangsan用户组改到ai211组中。
groupdel [组名] 删除指定组(只可删除空组)
groupdel vr211
usermod -G ai211,shandong heze 在ai211组中添加shandong和heze两个用户
cat /etc/group 用户组的所有信息都存放在/etc/group文件中
cat /etc/passwd 用户的所有信息都存放在/etc/passwd文件中
vipw命令 等同于vi/etc/passwd命令,用于直接对账户文件/etc/passwd文件进行编辑时自动锁定文件,编辑结束后对该文件进行解锁,保证了文件的一致性。
I插入 Esc退出 :wq保存并结束 :q!不保存并结束
ls -l命令 以长格式的形式显示出来
文件类型的几种符号d,-,l
d 代表目录目录
- 代表普通文件
l 表示为符号链接文件(link file)
第一个rwx意思是是所属用户(user permissions)
第二个rwx意思是是所属组(group permissions)
第三个rwx意思是是其他所属用户(other permissions)
r代表read(可读)
w代表write(写入)
x代表execute(执行)
chgrp ai211 123 更改123文件夹的所属组为ai211组
chown duanhuijie 123 更改123文件夹的所属用户为duanhuijie
chown huijie:789 666 修改666文件夹的用户为huijie,同时修改组为789
chmod命令 更改文件9个属性
chmod用二进制的形式修改文件属性
chmod 777 wenjian 修改wenjian的三者权限都为rwx
rwx三个权限都有则二进制表示为111,转换为十进制为7
详细讲解:略
chmod -R 661 a 将a目录以及a目录下的子目录递归改变其权限为rw-rw---x
-R 进行递归(recursive)的持续变更,以及连同次目录下的所有文件都会变更
chmod用字符的形式修改文件属性
使用以下4种字母表示不同用户
u:user,表示所有者
g:group,表示属组
o:others,表示其他用户
a:all,表示以上3种用户
使用以下3种字母的组合表示法设置操作权限
r:read,可读
w:write,写入
x:execute,执行
操作符号包括以下三种
+:添加某种权限
-:减去某种权限
=:赋予给定权限并取消原来的权限
chmod g-r wenjian 修改wenjian的所属组权限,减去r权限
chmod a=r wenjian 修改wenjian的三种用户的所属权限都为r
umask 命令 查看或则修改文件的预设权限
<----与一般权限有关的是后面3个数字
建立文件,预设没有可执行(x)这个权限,即只有rw这两个权限,也就是最大为666,预设权限为:-rw-rw-rw-
建立目录,默认权限均开放,即为777,预设权限为:drwxrwxrwx
022的由来
若是新建立目录,那么目录的默认权限为drwxr-xr-x,也就是755,那么777-755=022;
若是新建文件,那么文件的默认权限为-rw-r--r--,也就是644,那么666-644=022
umask -S 大写S选项会以符号类型的方式显示权限,不加S以数字的形式显示
umask 222 可以直接修改默认权限,但是其他用户的默认权限不一定修改
chattr 命令 修改问价隐藏属性
a:系统只允许在这个文件之后追加数据,不允许任何进程覆盖或截断这个文件。如果目录具有这个属性,系统将只允许在这个目录下建立和修改文件,而不允许删除任何文件。
b:不更新文件或目录的最后存取时间
c:将文件或目录压缩后存放
d:将文件或目录排除在操作之外
i:不得任意改动文件或目录
s:保密性删除文件或目录
S:即时更新文件或目录
u:预防意外删除
最重要的是+i和+a这两个属性
-R:递归处理,将指定目录下的所有文件及其子目录一并处理
-v<版本编号>:设置文件或目录版本
-V:显示指令执行过程
+<属性>:开启文件或目录的该项属性
-<属性>:关闭文件或目录的该项属性
=<属性>:指定文件或目录的该项属性
chattr +i duanhuijie 给duanhuijie文件加i权限
加上i权限后,不能改也不能删
chattr =a duanhuijie 指定duanhuijie文件为权限,可以追加。
访问控制列表
setfacl 命令 用于管理问价的ACL规则
R:递归
m:针对普通文件
b:删掉某个文件的ACL
setfacl -Rm u:duan:rwx /root 给用户duan设置访问/root的权限
duan用户成功cd进入 /root目录
getfacl 获取访问控制列表(显示文件上设置的ACL信息)
getfacl /root 获取 /root的访问控制列表
Linux添加磁盘
fdisk /dev/sdb 命令
n 新建磁盘分区
p(primary)新建主分区
默认分区号第一次分区默认为1
第一个分区分100M,(+100M此过程不能退格)
输入p查看刚才设置的分区
确认分区信息无误后输入w将分区信息写入disk
至此第一次分区结束!
再次运行ls /dev命令即可查看到sdb1文件👇。
删除分区
运行fdisk /dev/sdb命令后输入d(delete)选项进行删除分区的操作。
如果有两个分区,默认删除分区2,如果只有一个分区,输入d后直接删除1分区。
输入p查看当前剩余的分区
确认分区信息无误后输入w将分区信息写入disk
再次运行ls /dev命令查看/dev下的文件sdb2将会消失
mkfs 命令 建立文件系统(格式化分区)
-t:指定要创建的文件系统类型
-c:建立文件系统首先检查坏块
-l file:从file文件中读磁盘坏块列表,file文件一般是由磁盘坏块检查程序产生的。
-V:输出建立文件系统详细信息
mkfs -t ext4 -V -c /dev/sdb1 格式化sdb1磁盘分区,-t ext4指定要创建ext4文件系统,-V要卸载-c的前面
mount命令 挂载设备
mount -t ext4 /dev/sdb1 /duan 将文件类型为ext4的磁盘分区挂载到/duan文件夹下
进入/duan目录使用ls -al命令查看所有文件,可以看见有一个lost+fount文件
也可以用lsblk命令查看已经挂载的分区
umount 命令 卸载已经挂载的分区
直接在/duan目录下运行umount -t ext4 /dev/sdb1 /duan命令会出现“目标忙”的提示;
cd /回到根目录(或者退出/duan目录)即可
fsck命令 检查文件系统的正确性,并对Linux磁盘进行修复(必须先把磁盘卸载才能检查分区)
参数选项:
-C:显示完整的检查进度
fsck -C /dev/sdb1 对sdb1分区进行检查并修复
dd命令 使用dd命令建立和使用交换文件。当系统的交换分区不能满足系统的要求而磁盘上又没有可用空间时,可以使用交换文件提供虚拟内存(最小2G)
dd if=/dev/zero of=/duan/wenjian bs=1024M count=1
从/dev/zero文件下分出3个文件到/duan目录下,命名为wenjian,每个文件大小为1024M(bs=1024后不加单位默认为字节)。
mkswap /duan/wenjian1 使用mkswap命令说明该文件用于交换空间
swapon /duan/wenjian1 激活交换空间后即可用free命令查看
swapoff /duan/wenjian1 卸载被激活的交换空间
df 命令 查看磁盘空间的占用
参数选项:
-t:显示各指定类型的文件系统的磁盘空间使用情况
-T:显示文件系统类型
df -T (T代表Type)查看磁盘空间占用并显示文件系统类型
du命令 用于显示磁盘空间的使用情况。该命令逐级显示指定目录的每一级子目录占用文件系统数据块的情况。
文件系统的自动挂载
vim /etc/fstab 命令
按yy复制光标所在的行,按p粘贴刚才复制的行
i 进入插入模式
进入插入模式后修改相对应的信息
esc退出插入模式
:wq保存并退出
reboot重启后自动挂载
磁盘配额配置
首先添加一个磁盘
fdisk /dev/sdb 对sdb建立sdb1分区(2G足矣)
mkfs.ext4 /dev/sdb1 对sdb1分区建立文件系统(只有ext4文件类型才支持文件配额)
添加用户
运行vim adduser.sh命令,“adduser.sh”是一个文件名,可以自定义。
往adduser.sh内插入如下内容
运行sh useradd.sh 命令
cat /etc/passwd 查看创建的用户
vim /etc/fstab 进入挂载目录,配置一下开机自动挂载
reboot 重启系统
chgrp /duan duan 修改/duan所属组为duan
chmod g+w 给/duan目录添加其他用户的w权限
quotacheck -avug -mf 强制扫描已挂载的文件系统
quotaon -auvg 启动quon的服务
edquota -u user1 给user1进行限额设定
soft=280000kb≈280M 使用容量超过280M予以警告
hard=300000kb≈300M 最大容量为300M
edquota -p user1 -u user2 将user1的限额设置复制给其他用户
edquota -g duan 更改群组duan的限额
soft=900000kb≈900M 使用容量超过900M予以警告
hard=1000000kb≈1000M 最大容量为1000M
edquota -t 修改宽限时间
由原来的7days修改为现在的14days
测试磁盘配额
su – user1 切换到普通用户下,利用dd命令往user1 /duan目录下添加文件,当超出280M时,提示:“出错: 超出磁盘限额”
在Linux中配置软RAID
1.事先安装4块SCSI硬盘
2.创建4个磁盘分区
创建4个磁盘分区,容量大小都一致,都为500M
fdisk /dev/sd(b-e)
n选项创建新分区
fdisk -l | grep sd
为四个分区创建文件系统
mkfs.ext4 /dev/sd(b-e)1
修改磁盘ID
fdisk /dev/sd(b-e)
t项修改磁盘ID
fdisk -l
3.使用mdadm命令创建RAID5
madam --create /dev/md0 --level=5 --raid-devices=3 --spare-devices=1 /dev/sd[b-e]1
4.为建立的/dev/md0建立类型为ext4的文件系统
mkfs.ext4 /dev/md0
5.查看建立的RAID5的具体情况
mdadm --detail /dev/md0
6.将RAID设备挂载
将RAID设备挂载到指定目录/duan上
首先需要创建一个/duan目录
mkdir /duan
手动挂载文件系统
mount /dev/md0 /duan
写入一个数据块
hostnamectl status 查看主机名
nmtui命令 用界面的方式修改主机名。使用NetworkManager的nmtui接口修改后(/etc/hostnamed文件),不会通知hostnamectl。要想强制让hostnamectl知道静态主机名已经被修改,需要重启hostnamed服务。(动图演示👇)
使用hostnamectl修改主机名(动图演示👇)
使用NetworkManager的命令行接口nmcli修改主机名(动图演示👇)
使用vim修改主机名(修改hostname文件)
下载链接
Linux个人笔记.pdf
https://www.aliyundrive.com/s/bGKambXPP9H
提取码: ob95