Linux课堂笔记

笔记整理
系统
Red hat7.4
说明
课堂笔记整理
命令
一些常用小指令
运行模式
查看系统当前运行模式:systemctl get-default
设置系统开机运行模式,重启生效⤵
1 | systemctl set-default multi-user.target//多用户字符界面模式 |
设置运行模式直接生效⤵:
1 | systemctl isolate graphical.target 字符切换到图形界面 |
RHEL7默认有6个虚拟终端,其中:
不同虚拟终端之前自由切换:Ctrl+ALT+F1~F6;
查看当前终端:[root@localhost~]# tty
一行命令多个操作中间用“;”或“|”隔开
例如:切换到上级目录home,查看空间占有量并创建文件夹cc
[root@localhost home]# cd ../home;du -sh;mkdir cc
whoami:显示当前用户
关机操作
shutdown语法
shutdown -r now(立刻重启)
shutdown -h now(立刻关机)
systemctl reboot(重启系统)
systemctl poweroff(退出系统且关闭电源)
systemctl halt (CPU停止工作但不关闭电源)
logout(注销)
systemctl suspend(进行挂起,待机状态)
Ctrl+Alt+backspace注销
清屏功能:clear或Ctrl+L
改主机名
修改主机名⤵
临时修改:hostname
永久修改:hostnamectl set-hostname
目录结构和文件类型
🌈目录结构
- /:
Linux文件系统最上层根目录,其他所有目录均是该目录的子目录
- /bin:
bin是Binary的缩写, 存放普通用户可执行程序或命令
- /boot:
这里存放的是启动Linux时使用的一些核心文件,系统启动时所需文件。
- /dev :
dev是Device(设备)的缩写, 该目录下存放的是Linux的外部设备,在Linux中访问设备的方式和访问文件的方式是相同的。
- /etc:
这个目录用来存放所有的系统管理所需要的配置文件和子目录。
- /home:
用户的主目录,在Linux中,每个用户都有一个自己的目录,一般该目录名是以用户的账号命名的。
- /lib:
这个目录里存放着系统最基本的动态连接共享库,其作用类似于Windows里的DLL文件。几乎所有的应用程序都需要用到这些共享库。
- /lost+found:
这个目录一般情况下是空的,当系统非法关机后,这里就存放了一些文件。
- /media:
linux系统会自动识别一些设备,例如U盘、光驱等等,当识别后,linux会把识别的设备挂载到这个目录下。
- /mnt:
系统提供该目录是为了让用户临时挂载别的文件系统的,我们可以将光驱挂载在/mnt/上,然后进入该目录就可以查看光驱里的内容了。
- /opt:
这是给主机额外安装软件所摆放的目录。比如你安装一个ORACLE数据库则就可以放到这个目录下。默认是空的。
- /proc:
存放内核参数、硬件参数等相关信息。
- /root:
该目录为系统管理员,也称作超级权限者的用户主目录。
- /sbin:
s就是Super User的意思,这里存放的是系统管理员使用的系统管理程序。
- /selinux:
这个目录是Redhat/CentOS所特有的目录,Selinux是一个安全机制,类似于windows的防火墙,但是这套机制比较复杂,这个目录就是存放selinux相关的文件的。
- /srv:
srv是服务(server)的缩写,该目录存放一些服务启动之后需要提取的数据。
- /sys:
本目录是内核一些映射文件,以供应用程序所用。
- /tmp:
这个目录是用来存放一些临时文件的。10天内未访问、未修改将自动从该目录删除。
- /usr:
这是一个非常重要的目录,用户的很多应用程序和文件都放在这个目录下,类似于windows下的program files目录。
- /usr/bin:
系统用户使用的应用程序。
- /usr/sbin:
超级用户使用的比较高级的管理程序和系统守护程序。
- /usr/src:
内核源代码默认的放置目录。
- /var:
Variable缩写,这个目录中存放着在不断扩充着的东西,例如各种日志文件、经常变化的文件等。
- /run:
是一个临时文件系统,存储系统启动以来的信息。当系统重启时,这个目录下的文件应该被删掉或清除。
🌈文件类型
普通文件
- 用于存放数据、程序等文件。”-“表示
目录文件
- 由一个目录所包含的目录项组成的文件目录文件。”d”表示
设备文件
- 用于与I/O设备提供连接的一种文件,分为
- 块设备文件:表示磁盘、光盘等设备。”b”表示
- 字符设备文件:联系按照字符进行操作终端、键盘等设备。”c”表示
链接文件
- 指向另一个文件(源文件)的文件,用于不同目录下文件的共享和内容的同步。”l”表示
管道文件
- 主要用于在进程间传递数据。”p”表示
套接字文件
- 套接字(socket)文件通常用于网络数据连接。”s”表示
共享存储器
“m”表示
目录操作命令
pwd:查看当前工作目录(print working directory)
cd:用来在不同的目录间进行切换
ll -a:列出当前目录下的文件,包括权限
ls:列出当前目录内容(list)
- -R列出当前目录及所有子目录的文件名
- -hl显示文件目录大小
tree:以树状图列出目录内容
- -C 在文件和目录清单加上色彩,便于区分各种类型
- -d 显示目录名称而非内容
- -f 在每个文件或目录之前,显示完整的相对路径名称
- -p 列出权限标示
- -s 列出文件或目录大小
mkdir:创建目录(make directory)
- -p 创建子目录
du:统计显示目录或文件空间占用量
- -sh:统计该目录下所有文件占用量
文件操作命令
touch:新建空文件、修改日期
- -d:把文件的存取修改时间改为yyyy年mm月-dd日
- 例:touch -d 20220301 f1
- -a:只把文件的存取时间改为当前时间
- -m:只把文件的修改时间改为当前时间
cp:复制(copy)
- -p:复制目标保持相同的权限、属性
- -r:复制目录时必须用选项
mv:移动文件目录(move)
- -p:移动后源文件不存在,相当于删除
rmdir:删除空目录
rm:删除文件或目录(remove)
rm -rf /* 删库跑路命令
-r:递归删除
-f:强制删除
-i:删除时需要用户确认
ln:建立链接(link)
用法:ln [选项] [源文件和目录]
-s:建立符号链接(软链接),不加为硬链接
例:echo ‘hello world’ >f3 #向下当前目录下的f3文件写入内容
ln f3 /tmp/test1 #在/tmp目录下创建f3硬链接文件test1
ln -s f3 /tmp /test2 #在/tmp目录下创建f3符号链接文件test2
find:查找文件或目录
例👩🦽
- find /etc-name ‘me*’ //搜索etc目录中,所有文件以me开头的文件
whereis:查找文件(只能用于查找二进制文件、源代码文件和man手册)
例
- whereis bash :查看指令“bash”的位置
文件内容命令
cat:显示文件内容
- -n:所有内容显示行号
- -b:空行不标注行号
more|less:适合较多文件查看
more|less [选项] 文件名
- -数字:指定分页的行数适用于more
- -N:在每行添加行数适用于less
- less:【space】向下移动一页,【B】向上移动一页,【Q】退出
head和tail命令:查看文件开头或末尾部分内容
tail -c n 文件 :显示文件最后n个字节
- -num 指定需要显示行数,默认10行
- 例:head /etc/idmapd.conf //显示文件的前10行内容
- 例:tail -20 /etc/passwd //显示文件后20行内容
grep:检索、过滤文件内容
常用选项
- -i:查找内容时不区分大小写
- 例:grep ftp /etc/passwd //在文件passwd中查找包含“ftp”的行
- 例:grep “^user1$” /etc/passwd //在文件中搜索只含有’user1’五个字符的行
条件表达式
“^”表示开头
“$”表示结尾
压缩命令
zip
zip 【压缩文件名】 【 要压缩的文件】
zip redhat.zip notepad.txt //压缩单个文件
zip redhat.zip notepad.txt notepad1.txt //压缩多个文件
常用选项
- -r //指定目录下所有文件及子目录全部压缩
- -v //显示详细的压缩过程信息
- -m //将文件压缩之后,删除原文件
unzip //解压缩
- -l //显示压缩文件内所包含文件
- -d //指定解压缩文件目录
- 例:unzip -d 【目录】【压缩包】
tar
tar [参数] [压缩文件名] [要压缩的文件]
tar -zcvf redhat.tar.gz notepad.txt //压缩
tar -xvf redhat.tar.gz //解压
tar -tvf my_file.tar //显示包文件中每个文件详情
tar -xf my_file.tar -C /test/2 //将.tar压缩文件释放到/test/2目录下
常用选项
- -c 创建一个包文件
- -x 提取包文件
- -z 以gzip格式压缩或解压文件
- -v 显示压缩或解压文件过程
- -f 指定被打包或解包文件
- -C 释放到目标文件夹
- -z 以gzip格式压缩或解压缩文件使用最广泛
- -j 以bzip2格式压缩或解压缩文件
- -J 使用xz格式压缩或解压缩文件
重定向符号
echo “hello world” //将字符串’hello world’显示在屏幕上
echo “hello world” > index.html //将内容追加到文件中
echo “yes” >index.html //在原有文件添加“yes”
cat f1 f2>>f12 //将f1 f2文件合并到f12
管道操作符号——‘|’
介绍:将前一个命令输出通过一个无形的管道作为下一个命令的输入,实现将前一个命令输出的数据结果作为后一个命令所需要的数据源参数
使用场景:
- ls -al /etc |grep ftp
- ls -al |more
vim
工作模式
- 命令模式(Command mode)
- 插入模式(lnsert mode)
- 末行模式(last line mode)
进入编辑模式
- i #在当前光标位置处插入文本
- l #在当前行的开始处插入文本
- a #在当前光标位置之后插入文本
- A #在当前行的结尾插入文本
- o #在当前光标位置的下一行插入一个新行并将光标移动到行首
- O #在当前光标所在行插入一个新行并将原光标所在行移至下一行
光标移动
- k、j、h、l #向上、下、左、右四个方向移动
- ⬆️、⬇️、⬅️、➡️ #光标向上、下、左、右四个方向移动
- Home、End #光标移动到行首、行尾
- gg、G #光标移动文件内容的第一行、最后一行
字符串查找
/ 字符串回车,向后查找指定内容
? 字符串回车,向前查找指定内容
n键定位到下一个匹配的字符
N键定位到上一个匹配的字符
常用编辑命令
删除
- x或del #删除光标所在位置的字符
- dd #删除光标所在的行
- 3dd #删除指从当前行开始向下删除三行
复制
- yy #复制当前行整行的内容到剪切板
- 5yy #从光标处复制5行
粘贴
- P #将复制的文本插入到光标的后面
- p #将复制的内容插入到光标前面
撤销编辑
- u #按一次取消最近一次操作
- U #用于取消对当前行所做的所有编辑
内容替换
1 | :% s/old/new/g 在整个文章中替换所有字符串“old”替换为“new” |
保存文件
- :set nu #在编辑器显示行号
- :set nonu #取消行号显示
- :q #退出vim。如果对文件进行了修改,vim不能退出,将返回编辑模式
- :q! #放弃对文件内容的修改,并强制退出vim
- :w #保存当前文件(如果对当前用户对该用户没有写入权限,保存会失败)
- :wq或x #保存文件并退出vim
- :w文件名 #将当前文件另存为其他文件
- :wq! #保存编辑强制退出
用户和组配置
Linux系统中用户可分为:超级用户、系统用户、普通用户
- 超级用户
名为root的用户是系统中默认的超级用户,它在系统中的任务是对普通用户和整个系统进行管理。
- 系统用户
低权限用户,主要是为了维护系统或某些服务程序正常运行,这些用户一般不允许登录系统,例如:bin、daemon、ftp、mail等
- 普通用户
为了使用者能够使用linux系统资源而由root用户或其他管理员用户创建的用户,权限受到一定限制,一般只在自己的家目录中完全权限。
Linux系统中组可分为:基本组(主要组)、附加组(补充组)、系统组
- 基本组
建立用户时,若没有指定用户所属组,系统会建立一个和用户名想同的组,这个组就是基本组,基本组只能容纳一个用户,当其他用户加入改组,基本组就变成附加组。
- 附加组
可以容纳多个用户的组,组中的用户都具有组所拥有的权限
- 系统组
一般加入一些系统用户
配置详情
用户账号文件——/etc/passwd
密码文件——/etc/shadow
在linux系统中每个用户都在其中对应一行
例:
1 | root:x:0:0:root:/root:/bin/bash |
- 第一个字段:登录名称。必须是有效的用户名
- 第二个字段:加密格式保存密码的位置,现在密码保存在/etc/shadow文件中。此处只是密码占位符”x”或”*”。
- 第三个字符:用户ID号(UID号)。UID对用户是唯一的,系统内容用它来识别用户。
- 第四个字符:组ID,用户所属基本组的标识号(Group ldentify,GID号)
- 第五个字符:用户的全名或描述,可以是任意文本,通常填写一些个人信息。
- 第六个字符:用户家目录,该用户初始登录系统之后所处的目录
- 第七个字符:用户登录后所使用的shell或不能登录的/sbin/nologin标识。
组账号文件——/etc/group
/etc/group文件用于存放组账号的基本信息
例:
1 | root:x:0: |
- 第一个字段:组名称
- 第二个字段:加密密码,用x表示,一般未设置组密码
- 第三个字段:组ID号,也是一个整数,系统内部用来标识组
- 第四个字段:组成员列表
用户管理
useradd命令
useradd【选项】 用户名
-c //注释信息,用户相关说明
-d //设定用户家目录默认/home/用户名
-e //YYYY-MM-DD设置用户被禁用日期,此日期后将不能使用该用户
-f //天数,指定密码到期后多少天用户被禁用,若为0,则表示用户到期后被立即禁用,若指定为-1,则表示用户过期后不被禁用(即密码永不过期)
-g //组名或GID号-用户指定所属的基本组,该组在指定时必须存在
-G //组名或GID号列表-用户指定所属的附加组,各组在指定时已存在,附加组可以有多个,组之间用”,”分隔。
-M //不创建用户家目录
-N //不创建与用户名同名的基本组,而是将用户添加到-g选项指定的组
-p //密码,指定用户的登录密码。
-s //shell名,指定用户登录后使用的shell,默认时bash。
-u //用户名,设置用户的UID,默认是已有用户的最大UID加1.如果同时有-o选项,则可以重复使用其他用户标识号。
usermod命令
修改用户的属性
usermod 【选项】 用户名
- -l //更改用户名称,须在该用户未登录的情况下使用。
- -L //锁定(暂停)用户,使其不能登录使用。
- -U //解锁用户。
userdel命令
删除用户
userdel 【-r】 用户名
- -r //删除用户时把用户的家目录和邮箱池一起删除
su命令
切换用户
su –l test #从 root 用户 切换成 test 用户
示例
1.新建一个用户wang6,指定其UID为1006、登录shell为/bin/bash、密码为123.com,账号永不过期。
[root@jw2031-122 ~]# useradd -u 1006 -s /bin/bash -p 123.com -f -1 wang6
2.新建一个辅助管理员用户admin,将其用户家目录指定为/admin,基本组指定为wheel,附加组为adm组和root组。
[root@jw2031-122 ~]# useradd -d /admin -g wheel -G adm,root admin
3.新建一个用于访问FTP的用户zhao6,禁止其登录不创建家目录。
[root@jw2031-122 ~]# useradd -M -s/sbin/nologin zhao6
useradd test //添加一个名称为 test 用户
passwd test //给刚创建用户 test 设置密码
userdel test //删除 test 用户
userdel –r test //连用户的主目录一起删除
组的管理
groupadd命令
groupadd 【选项】 组名
- -g GID //指定新建组的组ID
- -r //建立一个系统组,与-g不同时使用时,则分配一个1-999的GID
示例:
向系统组中添加一个组ID为1010,组名为group1的新组。
[root@jw2031-122 ~]# groupadd -g 1010 group1
gpasswd命令
添加/删除组成员
gpasswd 【选项】【用户】【组】
- -a //用户名,把用户名加入组。
- -d //用户名,把用户名从组中删除
- -M //用户列表,向组中同时添加多个用户,多个用户名之间用“,”隔开
- -A //用户名,给组指派管理员
示例:
将zhang3、li4用户同时加入group1组,并指派zhang3为管理员。
[root@jw2031-122 ~]# gpasswd -M zhang3,li4 group1
[root@jw2031-122 ~]# gpasswd -A zhang3 group1
groupmod命令
groupmod [选项] 组名
- -g GID新号,更改组的GID
- -n 新组名,更改组的名字
示例:
将组group1的GID修改为2000,组名修改为group11
[root@jw2031-122 ~]# groupmod -g 2000 -n group11 group1
groupdel命令
删除组
groupdel 组名
用户和组信息显示
w 或者 who、users //查看当前登录用户
whoami //查看当前用户
id【用户名】 //显示当前用户或指定用户的ID,以及所属组的ID
groups 【用户名】 //显示当前用户或指定用户所属组的信息
last 、lastlog //查看用户登入信息
文件和目录权限
配置详情
文件或目录的详情分为七栏显示。
例:
1 | drwxr-xr-x. 2 root root 6 2月 27 22:04 Music |
第一栏共(11)位是文件类型和访问权限由五部分组成
例:
drwxr-xr-x.
第一个字符:文件类型
第二至四字符:该文件属主用户(文件所有者)对该文件的访问权限
第五至七字符:该文件属组用户和对该文件访问权限
第八至十字符:其他用户对该文件的访问权限
第十一字符:是否有一个可替换访问控制措施应用在该文件中;
- 为空格时表示系统没有可替换访问控制措施;
- 为”.”时,该文件使用了selinux安全上下文,未使用其他访问控制措施;
- 为”+”时,该文件使用selinux安全上下文同时,还混用了其他访问控制措施(如:访问控制列表ACL)。
chmod命令
Chmod命令用于修改、设置文件权限修改方法:字母法、数字法
字母法
- 字母法:chmod [选项] [ugoa] 【+|-|=】 [rwx] 文件或目录……
下面先介绍这些参数意义:
1.ugoa——表示权限设置所针对的用户类别,可以是字母中的一个或组合。
- u(user)表示文件或目录的属主(所有者)
- g(group)表示属组内的用户
- o(others)表示其他任何用户
- a(all)表示所有用户(即u+g+o)
2.【+|-|=】——表示设置权限的操作动作,’+’代表添加某个权限,’-‘代表取消某个权限,’=’代表只赋予给定的权限,并取消原有权限。
3.rwx——用字符形式表示的所设置的权限,可以是一个字母中一个或组合
4.nnn——用三位八进制数字表示所设置权限
选项:
-R——递归修改指定目录下所有文件、子目录的权限。
例:
创建查看文件file1.txt,为文件所有者添加可执行的权限,为组内用户设置可写和可执行权限,为其他人添加可写权限,最后设置file1.txt文件的权限为’-rwx-wxrw-‘
[root@jw2031-122 ~]# chmod u+x,g=wx,o+w file1.txt
数字法
- 数字法:chmod+数字组合+文件名
数字组合一般包含三个数字:
第一个数字对应用户u(user)
第二个数字对应用户g(group)
第三个数字对应用户o(other)
另外r(read)——4,w(write)——2,x(excute)——1
例:
数字法:chmod 765 file1.txt
对应字母法:chmod u+rwx,g=rw,o+rx file1.txt
特殊权限
sticky bit
sticky bit只对目录有效,使目录下的文件,只有文件拥有者才能删除(如果他不属于owner,仅属于group或者other,就算他有w权限,也不能删除文件)。
加sticky bit的方法:
chmod o+t /tmp或者
chmod 1777 /tmp
查看是否加了sticky bit,用ls -l,可以看到有类似这样的权限:“-rwxrwxrwt”,t就代表已经加上了sticky bit,而且生效了,如果显示的是“-rwxrwxrwT”,说明也已经加上了sticky bit,但没有生效(因为本来other就没有写的权限)。
SGID(The Set GroupID )
加上SGID的文件,表示运行这个程序时,是临时以这个文件的拥有组的身份运行的;加上SGID的文件夹,表示在这个目录下创建的文件属于目录所有的组,而不是创建人所在的组,在这个目录下创建的目录继承本目录的SGID。
加SGID的方法:
chmod g+s /tmp或
chmod 2777 /tmp
查看是否加了SGID,用ls -l,可以看到类似这样的权限“drwxrwsrwx”,s就代表已经加上了SGID,而且生效,如果显示“drwxrwSrwx”,说明已经加上了SGID,但没有生效(因为本来group就没有执行的权限)。
SUID(The Set UserID)
SUID与SGID是一样的,惟一不同的是,运行时是以这个文件的拥有者身份来运行。
加SUID的方法:
chmod o+s /tmp或
chmod 4777 /tmp
同样的,加了SUID的文件权限有这类似这两种:“drwsrwxrwx”、“drwSrwxrwx”。
文件目录默认权限
新建文件的默认权限=666-umask值
新建目录的默认权限=777-umask值
umask #查看默认umask值
网络
ip addr //查看当前的网卡
ifconfig //查看IP地址 :
ip link //比较新鲜的
netstar/ss //查看网络连接数
ping /hping3 //查看网络延迟
route/ traceroute //路由,查询路由表
dig / nslookup //查看DNS解析
ptables //排查防火墙
tcpdump /Wireshark //网络抓包
进程和系统
ps //查看当前终端活动进程
- -ef //显示系统中所有进程
- -lu //显示指定用户
- aux //查看各个进程占用CPU及内存情况
[root@zs ~]# pstree -p |grep httpd //查看搜索httpd进程
[root@zs ~]# pstree -p |grep httpd
|-httpd(10470)-+-httpd(10474)
| |-httpd(10475)
| |-httpd(10476)
| |-httpd(10477)
| `-httpd(10478)
[root@zs ~]# kill 10470 //杀死进程
[root@zs ~]# ps aux|grep httpd //筛选命令,通过管道符查找httpd服务
kill -9 46207 //强制杀死进程,46207为进程号
df -lh //查看磁盘信息:
free 或free -m //查看内存信息
mpstat -P ALL 1 5 //查看cpu占用情况:
## (5秒内每隔一秒打印一次CPU占用信息)
netstat -help //查看端口
netstat -oan //所有端口占用情况
## 查看进程 (按内存占用从大到小)
PS-e -o “%C : %p : %z : %a”|sort -k5 -nr
## (按cpu利用率从大到小排列)
ps-e -o “%C : %p : %z : %a”|sort -nr








