Linux的发展史与GNU
参考我的博客
Linux文件、目录相关内容
目录管理
绝对路径与相对路径:
-
绝对路径:以根目录(/)开始写起的目录或文件名称:如/home/dmtsai
-
相对路径:不是以(/)开头的都是相对路径 如:…/home/dmtsai(只需要搞清楚目录层次与“…”符号的意义)
了解常用目录应放置文件内容
- / 根目录:与系统的启动、还原、系统修复等操作有关
- /etc 系统主要的配置文件都放在这里,只有root有权利修改
- /opt 第三方辅助软件放置的目录
- /tmp 用户正在执行的程序暂时放置文件的地方,用完即丢
- /usr(Unix Software Resource)操作系统软件资源放置的位置
- /home 系统默认家用户目录,当你新增一个用户帐号时,会默认规范到这个目录下
- /root 系统管理员的家目录
目录的常用命令
-
比较特殊的目录:. :代表此层目录;… :代表上层目录
-:代表前一个工作目录 ~ :代表目前使用者身份所在的家目录
-
tab:具有自动补全目录或文件路径的功能
-
cd:切换目录
-
pwd:显示当前目录 -p:显示真正的路径(针对链接)
-
mkdir:创建新的目录 -m可设置目录权限 -p可递归创建
-
rmdir:删除一个空目录 -p连同上层空的目录全部删除
文件与目录通用的常用命令
-
ls:文件与目录的查看 -a列出全部的文件(包括隐藏文件)
-d仅列出目录本身,而不列出目录内的文件数据(操作结果为 ’.‘)
-l列出详细信息,包括文件属性和权限等(不包含隐藏文件)
-
cp:复制目录或文件 cp (多个)源文件 目标文件
-i若目标文件存在时,覆盖时会先询问操作是否进行
-f强制的意思,若目标文件已经存在且无法开启,则删除后再尝试
-l进行硬链接 -s进行符号链接(关于硬链接和符号链接,详情请见我的博客)我的博客
-r递归复制,常用于目录赋值操作
-p连同文件的属性一起复制过去,通常用于备份
- rm:删除文件或目录
-f就是force的意思,忽略不存在的文件,不会出现警告
-I交互模式,删除前会询问是否操作
-r递归删除,最常用于目录的删除
rm-rf / 删库跑路
- mv:移动文件与目录或重命名(如果第二个参数是文件时,实现的是重命名;第二个参数是是目录,实现的是移动)
-f -i -u如果目标文件存在且源文件比较新,才会更新
文件管理
文件属性
修改文件属性与权限
- chgrp [-R] 属组名 文件/目录名:修改所属属组(用户组)R代表可以递归
- chown 【-R】 属主名(:属组名) 文件或目录:修改所属属主同时也可修改属组
- chmod 【-R】 xyz 文件或目录:修改权限
补充:三个权限rwx,分别对应数字421,如果rwx都有权限则4+2+1=7
chmod 777 test.txt :修改test.txt的权限,使得属主、属组、其他用户都可对该文件进行rwx操作
直接查看文件内容
- cat:查看一个文件的内容
-n打印行号,空白行也会打印 -A列出一些特殊的符号而不是空白
- tac:倒序查看文件内容
- nl:查看一个文件内容,其可以对行号有较多的显示设计
可翻页查看
- more:一页一页翻动
当一页展示不完文件内容时,光标会停留在这页的最后一行,显示已经展示了文件内容的百分比
空格键代表向下翻一页;Enter键代表向下翻一行;:f显示文件名和当前行数;q立刻离开more ;/字符串:在显示的内容中,向下查找这个字符串关键字
- less:一页一页翻动,用法比more更加弹性,可以向前翻动、向上查找
?字符串:向上查找
数据截取
- head [-n number]:取文件内容前面几行
number是负数代表后面|number|都不打印
- tail [-n ]:取文件内容后面几行
+number代表从number行以后的行都会被列出
修改文件时间或创建新文件
- touch 文件名:创建一个新的文件
- touche -t 202105290402 文件名:修改了文件的atime和mtime
- echo ”内容“>>文件名:向文件里输入内容
vim:程序编辑器
什么是VIM编辑器
在Linux的系统中使用文本编辑器来编辑你的Linux参数配置文件,这是一件很重要的事情,这件重要的事情,就是通过文本编辑器来完成的
在所有的UNIX-like系统中都会内置vi文本编辑器,而其他文本编辑器不一定存在
很多软件的编辑接口都会主动调用vi
vim具有编程能力,可以主动以字体颜色辨别语法正确性,方便程序设计
vi是老式的文本编辑器,功能已经十分齐全,但是还可以更进一步,我们可以将vim视为其的高级版本,注意vim是程序编辑器而不是文件处理器
三种使用模式
- 命令模式:刚启动vim,便进入了命令模式,在此状态下的输入会被识别为命令而不是字符
i:切换到输入模式
x:删除当前光标所在字符
**:**切换到底线模式
- 输入模式
字符按键以及Shift组合,输入字符
ENTER,回车键,换行
BACK SPACE,退格键,删除光标前一个字符
DEL,删除键,删除光标后一个字符
方向键,在文本中移动光标
HOME/END,移动光标到行首/行尾
Page Up/Page Down,上/下翻页
Insert,切换光标为输入/替换模式,光标将变成竖线/下划线
ESC,退出输入模式,切换到命令模式
- 底线模式
:q:退出程序
:w:保存文件
ESC:退出底线模式
vim按键说明
- 一般命令模式可用按键说明
移动光标的方法 | |
---|---|
[Ctrl] + [f] | 屏幕『向下』移动一页,相当于 [Page Down]按键 (常用) |
0 或功能键[Home] | 这是数字『 0 』:移动到这一行的最前面字符处 (常用) |
$ 或功能键[End] | 移动到这一行的最后面字符处(常用) |
G | 移动到这个档案的最后一行(常用) |
gg | 移动到这个档案的第一行,相当于 1G 啊!(常用) |
n< Enter> | n 为数字。光标向下移动 n 行(常用) |
搜索替换 | |
/word | 向光标之下寻找一个名称为 word 的字符串。例如要在档案内搜寻 vbird 这个字符串,就输入 /vbird 即可!(常用) |
x, X | 在一行字当中,x 为向后删除一个字符 (相当于 [del] 按键), X 为向前删除一个字符(相当于 [backspace] 亦即是退格键) (常用) |
dd | 删除游标所在的那一整行(常用) |
ndd | n 为数字。删除光标所在的向下 n 行,例如 20dd 则是删除 20 行 (常用) |
yy | 复制游标所在的那一行(常用) |
nyy | n 为数字。复制光标所在的向下 n 行,例如 20yy 则是复制 20 行(常用) |
u | 复原前一个动作。(常用) |
[Ctrl]+r | 重做上一个动作。(常用) |
- 编辑模式可用按键
进入输入或取代的编辑模式 | |
---|---|
[Esc] | 退出编辑模式,回到一般模式中(常用) |
i, I | 进入输入模式(Insert mode):i 为『从目前光标所在处输入』, I 为『在目前所在行的第一个非空格符处开始输入』。(常用) |
a, A | 进入输入模式(Insert mode):a 为『从目前光标所在的下一个字符处开始输入』, A 为『从光标所在行的最后一个字符处开始输入』。(常用) |
o, O | 进入输入模式(Insert mode):这是英文字母 o 的大小写。o 为『在目前光标所在的下一行处输入新的一行』;O 为在目前光标所在处的上一行输入新的一行!(常用) |
r, R | 进入取代模式(Replace mode):r 只会取代光标所在的那一个字符一次;R会一直取代光标所在的文字,直到按下 ESC 为止;(常用) |
- 一般命令模式可用按键
指令行的储存、离开等指令 | — |
---|---|
:w | 将编辑的数据写入硬盘档案中(常用) |
:q | 离开 vi (常用) |
:wq | 储存后离开,若为 :wq! 则为强制储存后离开 (常用) |
Linux用户账号管理
简介
Linux系统是一个多用户多任务的分时操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个账号,然后以这个账号的身份进入系统获取shell的环境来工作。
用户的账号一方面可以帮助系统管理员对使用系统的用户进行跟踪,并控制他们对系统资源的访问;另一方面也可以帮助用户组织文件,并为用户提供安全性保护。
每个用户账号都拥有一个唯一的用户名和各自的口令。
用户在登录时键入正确的用户名和口令后,就能够进入系统和自己的主目录。
补充:LInux主机并不会在直接认识你的用户名,它仅认识ID,每个用户名对应自己的唯一一个ID号
用户帐号管理
添加帐号
- useradd -选项 用户名
选项说明:
-
- -c comment 指定一段注释性描述。
- -d 目录 指定用户主目录,如果此目录不存在,则同时使用-m选项,可以创建主目录。
- -g 用户组 指定用户所属的用户组。
- -G 用户组,用户组 指定用户所属的附加组。
- -m 使用者目录如不存在则自动建立。
- -s Shell文件 指定用户的登录Shell。
- -u 用户号 指定用户的用户号,如果同时有-o选项,则可以重复使用其他用户的标识号
- 在/etc/passwd里面建立一行与帐号相关的数据,包括建立UID/GID/家目录
在/etc/shadow里面将此帐号的秘密相关参数输入,但是尚未有密码
在/etc/group里面加入一个与帐号名称一模一样的组名
在/home下面建立一个与帐号同名的目录作为家用户目录,且权限为700
切换帐号
1.切换用户的命令为:su username 【username是你的用户名哦】
2.root用户可用随意切换到其他用户,但是其他用户如果想要切换用户是要输入密码的哦(Linux中的密码是不显示的,所以不要看见没有显示就觉得它出错了)
3.在终端输入exit或logout或使用快捷方式ctrl+d,可以退回到原来用户,其实ctrl+d也是执行的exit命令
4.在切换用户时,如果想在切换用户之后使用新用户的工作环境,可以在su和username之间加-,例如:【su - root】
$表示普通用户
#表示超级用户,也就是root用户
删除帐号
userdel 选项 用户名
选项主要使用 -r,它的作用是把用户的主目录一起删掉(主要是/etc/passwd, /etc/shadow, /etc/group等),同时也删掉其主目录
修改帐号
usermod 选项 用户名 选项详情自行查找
用户口令管理
用户管理的一项重要内容是用户口令的管理。用户账号刚创建时没有口令,但是被系统锁定,无法使用,必须为其指定口令后才可以使用,即使是指定空口令。
指定和修改用户口令的Shell命令是passwd。超级用户可以为自己和其他用户指定口令,普通用户只能用它修改自己的口令
passwd 选项 用户名
可使用的选项:
- -l 锁定口令,即禁用账号。
- -u 口令解锁。
- -d 使账号无口令。
- -f 强迫用户下次登录时修改口令。
如果默认用户名,则修改当前用户的口令。
普通用户修改自己的口令时,passwd命令会先询问原口令,验证后再要求用户输入两遍新口令,如果两次输入的口令一致,则将这个口令指定给用户;而超级用户为用户指定口令时,就不需要知道原口令。
与用户有关的几个目录
/etc/passwd
Linux系统中的每个用户都在/etc/passwd文件中有一个对应的记录行,它记录了这个用户的一些基本属性,这个文件对所有用户都是可读的
# cat /etc/passwd
root:x:0:0:Superuser:/:
daemon:x:1:1:System daemons:/etc:
bin:x:2:2:Owner of system commands:/bin:
sys:x:3:3:Owner of system files:/usr/sys:
adm:x:4:4:System accounting:/usr/adm:
uucp:x:5:5:UUCP administrator:/usr/lib/uucp:
auth:x:7:21:Authentication administrator:/tcb/files/auth:
cron:x:9:16:Cron daemon:/usr/spool/cron:
listen:x:37:4:Network daemon:/usr/net/nls:
lp:x:71:18:Printer administrator:/usr/spool/lp:
用户名:口令:用户标识号:组标识号:注释性描述:主目录:登录Shell
etc/shadow
对安全性要求较高的Linux系统都把加密后的口令字分离出来,单独存放在一个文件中,这个文件是/etc/shadow文件。有超级用户才拥有该文件读权限,这就保证了用户密码的安全性。
/etc/shadow中的记录行与/etc/passwd中的一一对应,它由pwconv命令根据/etc/passwd中的数据自动产生
[root@yanyun /]# head -n 4 etc/shadow
root:$6$7Zw.j/uFho8/a8zL$ST6d3tlKk7wW2gwi6D5qfX5R3AOwW32DjgCElvVSB16xW2vZEDphWEyS8U9rlY8hZbHqQKUFpbRtetBwMUrcZ/:18770:0:99999:7:::
bin:*:18027:0:99999:7:::
daemon:*:18027:0:99999:7:::
adm:*:18027:0:99999:7:::
登录名:加密口令:最后一次修改时间:最小时间间隔:最大时间间隔:警告时间:不活动时间:失效时间:标志
"最小时间间隔"指的是两次修改口令之间所需的最小天数。
"最大时间间隔"指的是口令保持有效的最大天数。
"警告时间"字段表示的是从系统开始警告用户到用户密码正式失效之间的天数。
"不活动时间"表示的是用户没有登录活动但账号仍能保持有效的最大天数。
"失效时间"字段给出的是一个绝对的天数,如果使用了这个字段,那么就给出相应账号的生存期。期满后,该账号就不再是一个合法的账号,也就不能再用来登录了。
etc/group
[root@yanyun /]# clear
[root@yanyun /]# head -n 4 etc/group
root:x:0:
bin:x:1:
daemon:x:2:
sys:x:3:
组名:口令:组标识号:组内用户列表
"组名"是用户组的名称,由字母或数字构成。与/etc/passwd中的登录名一样,组名不应重复。
"口令"字段存放的是用户组加密后的口令字。一般Linux 系统的用户组都没有口令,即这个字段一般为空,或者是*。
"组标识号"与用户标识号类似,也是一个整数,被系统内部用来标识组。
"组内用户列表"是属于这个组的所有用户的列表/b],不同用户之间用逗号(,)分隔。这个用户组可能是用户的主组,也可能是附加组。
几个目录之间的关系
- 这几个目录的重点是etc/passwd。其他相关的数据都是根据这个文件的字段去寻找出来的附上一张图(来自鸟哥的Liunx私房菜)
Linux用户组管理
-
每个用户都有一个用户组,系统可以对一个用户组中的所有用户进行集中管理。不同Linux 系统对用户组的规定有所不同,如Linux下的用户属于与它同名的用户组,这个用户组在创建用户时同时创建。
-
一个帐号可用加入多个用户组
-
用户组有有效用户组和初始用户组的划分
-
假设一个账号同时支持t1、t2、t3三个用户组,那么,只要是t1、t2、t3这三个用户组拥有的功能,这个帐号都能够拥有,但是,这时针对已经存在的文件而言,如果要新建立一个目录或文件,新文件的用户组是哪个呢?当然是它的有效用户组了!
关于有效用户组的命令
-
加入用户组的方式:root利用usermod 用户组管理员用gpasswd
-
groups :通过此命令可以查看有效与支持用户组的观察,第一个用户组是有效用户组
-
newgrp:有效用户组的切换
补充:这个命令可以修改目前用户的有效组,而且是以另一个shell来提供这个功能的
用户组管理
添加用户组
- groupadd 选项 用户组名
可以使用的选项有:
-g GID 指定新用户组的组标识号(GID)。
-o 一般与-g选项同时使用,表示新用户组的GID可以与系统已有用户组的GID相同。
修改用户组
- groupmod 选项 用户组名
常用的选项有:
-g GID 为用户组指定新的组标识号。
-o 与-g选项同时使用,用户组的新GID可以与系统已有用户组的GID相同。
-n新用户组 将用户组的名字改为新名字
删除用户组
- groupdel 选项 用户组名
磁盘管理及文件系统
磁盘管理常用的命令
df:列出文件系统的整体磁盘使用量
-
df命令参数功能:检查文件系统的磁盘空间占用情况。可以利用该命令来获取硬盘被占用了多少空间,目前还剩下多少空间等信息
-
df [-ahikHTm] [目录或文件名]
- -a :列出所有的文件系统,包括系统特有的 /proc 等文件系统;
- -k :以 KBytes 的容量显示各文件系统;
- -m :以 MBytes 的容量显示各文件系统;
- -h :以人们较易阅读的 GBytes, MBytes, KBytes 等格式自行显示;
- -H :以 M=1000K 取代 M=1024K 的进位方式;
- -T :显示文件系统类型, 连同该 partition 的 filesystem 名称 (例如 ext3) 也列出;
- -i :不用硬盘容量,而以 inode 的数量来显示
[root@yanyun /]# df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 869M 0 869M 0% /dev
tmpfs 879M 708K 878M 1% /dev/shm
tmpfs 879M 496K 878M 1% /run
Filesystem:代表该文件系统是在哪个硬盘分区,所以列出设备名称 tmpfs是Linux中的一个文件系统
Mounted on:磁盘的挂在目录
du:查看文件系统的磁盘使用量
-
常用在查看目录所占用磁盘空间
-
du [-ahskm] 文件或目录名称
- -a :列出所有的文件与目录容量,因为默认仅统计目录底下的文件量而已。
- -h :以人们较易读的容量格式 (G/M) 显示;
- -s :列出总量而已,而不列出每个各别的目录占用容量;
- -S :不包括子目录下的总计,与 -s 有点差别。
- -k :以 KBytes 列出容量显示;
- -m :以 MBytes 列出容量显示
[root@yanyun home]# du 0 ./t/t1 0 ./t 16 ./yanyun 12 ./yanyun1 28 .
解读一下这个输出,du的输出是你想要查看的目录下所有的子目录有多少kb,这个命令会直接到文件系统内去查找所有的文件数据
比如 ./t/t1 没有内容,是0kb
./yanyun1 有12kb
整个home目录下一共是28kb
mount:文件系统挂载命令
mount [-t 文件系统] [-L Label名] [-o 额外选项] [-n] 装置文件名 挂载点
unmount:文件系统卸载命令
umount [-fn] 装置文件名或挂载点
选项与参数:
- -f :强制卸除!可用在类似网络文件系统 (NFS) 无法读取到的情况下;
- -n :不升级 /etc/mtab 情况下卸除。
进程管理
ps -aux|grep xxx(如Mysql)
ps-aux是查看所有的进程 通过‘|’管道符将其作为grep(使用正则表达式搜索文本,并把匹 配的行打印出来)的输入来得到自己想要的进程
pstree
目录树:通过目录树来查看父子进程之间的关系
[root@yanyun home]# clear
[root@yanyun home]# pstree
systemd─┬─AliYunDun───24*[{AliYunDun}]
├─AliYunDunUpdate───5*[{AliYunDunUpdate}]
├─NetworkManager───2*[{NetworkManager}]
├─2*[agetty]
├─aliyun-service───7*[{aliyun-service}]
├─assist_daemon───7*[{assist_daemon}]
├─atd
├─auditd─┬─sedispatch
│ └─2*[{auditd}]
├─chronyd
├─crond
├─dbus-daemon
├─lsmd
├─mcelog
├─mysqld───29*[{mysqld}]
├─nginx───nginx
├─php-fpm───8*[php-fpm]
├─polkitd───5*[{polkitd}]
├─rngd───2*[{rngd}]
├─rsyslogd───2*[{rsyslogd}]
├─smartd
├─sshd─┬─sshd───sshd───bash───su───bash───su───bash───sudo───su───bash───su───bash───su───bash───su───bash───su───bash───su───bash───su───bash───pstree
│ └─sshd───sshd───sftp-server
├─sssd─┬─sssd_be
│ └─sssd_nss
├─systemd───(sd-pam)
├─systemd-journal
├─systemd-logind
├─systemd-resolve
├─systemd-udevd
└─tuned───3*[{tuned}]
kill -signal PID
- 通过赋予进程信号(signal)去告知该进程你想要它做什么
代号有1、2、9、15、19
9代表的意思就是强制结束一个进程,通常用在发生死锁的情况下
- kill帮我们将这个信号传送给某个PID
参考:https://www.bilibili.com/video/BV187411y7hF?p=15&spm_id_from=pageDriver
鸟哥的Linux私房菜
文章主要参考狂神说Linux内容总结,仅是开发使用Linux的入门知识,如有总结不到位或错误,敬请指出