linux常用指令


记录汇总常用指令,便于学习查找。

改分辨率,终端下面输入命令:xrandr -s 1600x1200

一.基础操作

实验-控制台切换

  • shell(命令解释器)
    shell是C语言编写的脚本语言,是用户和操作系统的桥梁;用于接受用户指令,经过shell解释,将相应的操作传递给内核,内核根据指令做出相应的处理后,再通过Shell将执行结果返回给用户

  • shell前缀
    uos@uos-PC: ~$
    当前用户名@计算机名:当前工作目录 用户角色($普通用户 #超级用户)

  • 终端管理:
    鼠标右键->在终端中打开(快捷键:Ctrl + Alt + T)

    字符终端切换:(快捷打开不同的终端)
    Ctrl + Alt + F1 :图形化桌面
    Ctrl + Alt + F2 :命令行 tty2
    Ctrl + Alt + F3 :命令行 tty3
    Ctrl + Alt + F4 :命令行 tty4
    Ctrl + Alt + F5 :命令行 tty5
    Ctrl + Alt + F6 :命令行 tty6
    Alt + F1 :返回桌面模式
    查看当前控制台:who、w

实验-查看帮助信息

  • 命令组成:命令字 [选项] [参数]
    命令字:命令本身
    选项:决定这个命令如何执行
    短选项:单个字符选项,使用‘-’引导,同时使用多个选项用空格分隔,可组合
    长选项:多个个字符选项,使用‘–’引导,同时使用多个选项用空格分隔,不可组合

  • 帮助命令:
    man date #手册形式
    date --help #有中文

  • 路径类型
    绝对路径:相对于根目录(/)
    相对路径:相对于当前目录

实验- 基础命令

  • date +%F 完整日期格式,等价于 %Y(年)-%m(月)-%d(日)

  • pwd 查看当前工作目录

  • cd /home 绝对路径,切换到/home目录

  • cd home 相对路径

  • cd - 返回上一次工作目录

  • cd ~ 返回当前用户的家目录

  • cd … 切换上一级目录

  • ls 查看当前目录下内容

  • ls /home 查看/home目录下内容

  • ls -l /home 查看/home目录下内容长格式列表显示

  • mkdir file_test 创建file_test目录

  • mkdir -p /a/b/c 递归创建/a/b/c
    -v 显示详细

  • touch test.txt 创建test.txt文件

  • touch a b c 创建a、b、c三个文件

  • touch a{1…100} 批量创建a1 至 a100 的文件

  • cp -r /a/b/c /home 复制目录 c 到 /home

  • cp test.txt /home 复制文件 test.txt 到 /home

  • mv /a/b/c /home/c 移动目录 c 到 /home/c

  • mv /a? /home/c 将以a开头后面随机一位字符的文件移动到 /home/c

  • rm test.txt 删除test.txt文件

  • rm -f test.txt 强制删除test.txt文件不提醒

  • rm -rf file_test 强制删除file_test目录不提醒

  • rm a? ?匹配任意一位字符

  • rm a* * 匹配全部字符

  • cat /etc/passwd 查看 passwd 文件内容
    -n 带行号查看

二.用户和组

用户账号的常见分类:
超级用户:root uid=0 gid=0 权限最大。
普通用户:uid>=500 做一般权限的系统管理,权限有限。
程序用户:1=<uid<500 为了提升系统安全性,为了支持所对应服务对系统资源的使用,不能用于登录系统或管理系统。
UID:用户标识

用户账号文件(保存用户名称、宿主目录、登录 Shell 等基本信息,每一行对应一个用户的账号记录):
cat /etc/passwd
uos1❌1002:1002::/home/uos1:/bin/sh
用户名:密码:uid:gid:用户备注:家目录:shell

账号密码文件(保存用户的密码、账号有效期等信息,每一行对应一个用户的密码记录):
cat /etc/shadow
root: 6 6 6fLUXm989hDSCgPgp$jsVXwoZokQNEaNPUDCHBYR6naJ7C1:18426:0:99999:7:::
- 用户名:
- 使用MD5加密的密码字符串信息,*或!!时表示此用户不能登陆到系统,为空表示无密码登陆
- 账号上次修改时间距1970年1月1日过去多少天:
- 密码的最短有效天数,0表示不限制
- 密码最长有效天数,99999表示不限制
- 提前多少天警告用户口令即将过期,默认为7天
- 密码过期后多少天禁用此用户
- 账号失效时间,默认为空,表示永久使用
- 保留字段

useradd 添加用户账号命令
-m 创建用户的主目录
-c 添加备注,显示在/etc/passwd 第五字段
-d 指定宿主目录,缺省默认为/home/用户名
-g 指定用户的基本组名(或 gid 号)
-G 指定用户的附加组名(或 gid 号)
-N 取消以用户为名的组
-s 指定用户登录shell
-u 指定 uid 标记号
示例:
useradd -m -d /home/haha -s /bin/bash -u 2020 uos1
id uos1

passwd 设置/更改用户密码口令
示例:
passwd uos1

usermod 修改用户属性
-l:更改用户账号的登录名字
-c:修改用户备注
-L:锁定用户账号算计
-U:解锁用户账户
以下选项与 useradd 命令中的含义相同:-u、-d、-s、-c
-s 指定用户登录shell
示例:
usermod -s /usr/sbin/nologin uos1

userdel 删除用户账号
-r 删除用户同时删除主目录
userdel -r uos1

chage 修改帐号和密码的有效期限
-m:密码可更改的最小天数。为零时代表任何时候都可以更改密码。
-M:密码保持有效的最大天数。
-w:用户密码到期前,提前收到警告信息的天数。
-E:帐号到期的日期。过了这天,此帐号将不可用。
-d:上一次更改的日期。
-i:停滞时期。如果一个密码已过期这些天,那么此帐号将不可用。
-l:例出当前的设置。由非特权用户来确定他们的密码或帐号何时过期。
示例:
useradd -m -s /bin/bash uos1
passwd uos1
chage -l uos1 列出当前的设置
chage -d 0 uos1 #设为0,切换控制台用uos1登录后立刻要求修改密码
chage -E 2015-10-1 uos1 #切换控制台用qin1无法登陆

实验-检查用户身份
who 查询当前在线用户
w 查询当前在线用户的详细信息
id 显示用户ID信息
groups 查询客户所属的组

组账号分类:
基本组(主组):用户有且只能有一个基本组
附加组:用户可以有0或n个附加组
GID:组标识号
组账号文件
- /etc/group: 保存组账号基本信息
- /etc/gshadow:保存组账号的密码信息(较少使用)

组账号管理命令:
groupadd 添加组账号
groupdel 删除组账号
gpasswd 管理组命令(可通过–help查看其选项)
示例:
groupadd tx1
groupadd tx2
useradd -N uos1 #-N取消以用户为名的组
usermod -g tx1 uos1 指定用户的基本组名(或 gid 号)
id uos1
usermod -G tx2 uos1 指定用户的附加组名(或 gid 号)
id uos1
groupdel tx1 #发现不能删除
usermod -g tx2 uos1 #用户账号移到其他组后再删除

三.文件管理

在Linux系统中,一切皆文件(目录也是一个特殊的文件);因此对系统的管理,说到底就是对文件进行管理。

实验-基础操作
touch /home/uos/Desktop/.uos 创建隐藏文件,以“.”开头的文件为隐藏文件
ls -la /home/uos/Desktop/.uos -a 显示所有子目录和文件信息,包括隐藏文件
touch /home/uos/Desktop/fi\e \ 转义符
touch /home/uos/Desktop/‘fi\e’ 双,单引号,表示之内的字符串,没有其他含义
文件名中不能包括Linux特殊字符如“\”、“/”等(如果在文件中使用这些特殊符号可通过转义符“\”将其转义)。

实验-文件类型的检查
ls -l 查看文件的详细信息
-rw-r–r-- 1 root lonny 12 Apr 19 19:50 file1
文件类型、文件权限、硬连接数、文件属主、文件属组、文件大小、更动时间、文件名。

文件类型:第一位表示文件类型
    -:表示一般文件
    d:表示目录
    l:表示软链接
    p:进程间相互通信的文件,Linux拥有一些机制来允许进程间的互相通信,这些机制称为进程间通信机制,管道(pipe)、命名管道(FIFO)、共享缓冲区、信号量、sockets信号等都是进程间常用通信机制,pipe 是用于父进程和子进程之间通信。FIFO是一个文件,允许运行在同一台计算机的进程间进行通信。
    s:表示 socket 通信套接字文件(通常用于网络数据连接)
    c:表示字符设备文件(如:键盘、鼠标、终端等,通常放在/dev下)
    b:表示块设备文件(存储数据设备文件,如:硬盘)

file /etc/passwd    查看文件类型,text
file /dev/sda   块设备
file /boot/vmlinuz-4.19.0-6-amd64   内核启动镜像
file /usr/bin/touch 可执行文件

stat test   查看文件详细信息,更改时间等

文件权限
读权限 r:允许查看文件内容,使用4表示
写权限 w:允许修改文件内容,使用2表示
可执行 x:允许运行程序,使用1表示
无权限 -:使用0表示
例如:
drwxr-xr-x 意思是一个权限为 755 的目录
-rw-r–r-- 意思是一个权限为 644 的文件
所有权
属主:拥有该文件的用户账号
属组:拥有该文件的组账号

更改文件权限
chmod 设置文件或目录的权限
格式:
chmod [-R] [ugoa] [±=] [rwx] 参数
chmod [-R] [nnn] 参数

常用选项:
    -R:表示以递归的方式设置目录及目录下的所有子目录及文件的权限。
    u 属主
    g 属组
    o 其他人
    a 所有人
    + 添加
    - 删除
    = 重置
    nnn 数字权限,如:777 666 644 755 等

示例:
touch 1234
ls -l 1234
chmod u+x 1234 属主加可执行权限
chmod g=rwx 1234 重置属组权限为可读可写可执行
chmod o+rwx 1234 给除了属主属组的其他人增加可读可写可执行
chmod 755 1234 给文件改为755权限

更改文件属主数组
chown 设置文件的归属(只有root用户才可以用“chown”指令来改变文件的拥有者)
chown 属主:属组 文件名
chown 属主.属组 文件名

示例:
groupadd pxb 创建组pxb
useradd -g pxb uos1 创建用户uos1并指定他的组
useradd -g pxb uos2
echo 12345678 > /test 创建一个文件并写入
chown uos1:pxb /test 更改属主属组
chmod 640 /test 权限修改为640“rw-r-----”,uos1权限可读可写,组权限可读,其他人没有权限

su - uos1   切换到uos1用户
cat /test   可查看
echo 123 >> /test   可写
su - uos2   切换到uos2用户
cat /test   能读
echo 123 >> /test   不能写
useradd uos3    创建uos3
su - uos3   切换用户
cat /test   不能读
echo 456 >> /test   不能写

管理 Linux 系统中的文件和目录,除了可以设置上述读写执行权限外,还可以使用chattr设置文件/文件夹的隐藏权限,chattr只有root用户可以使用

命令格式为:
chattr [±=] [属性] 文件/目录名

    + :在原有参数设定基础上,追加参数。
    - :在原有参数设定基础上,移除参数。
    = :更新为指定参数设定。
属性:
    i:如果对文件设置 i 属性,那么不允许对文件进行删除、改名,也不能添加和修改数据;如果对目录设置 i 属性,那么只能修改目录下文件中的数据,但不允许建立和删除文件
    a:如果对文件设置 a 属性,那么只能在文件中増加数据,但是不能删除和修改数据;

如果对目录设置 a 属性,那么只允许在目录中建立和修改文件,但是不允许删除文件
u:设置此属性的文件或目录,在删除时,其内容会被保存,以保证后期能够恢复,常用来防止意外删除文件或目录
s:和 u 相反,删除文件或目录时,会被彻底删除(直接从硬盘上删除,然后用 0 填充所占用的区域),不可恢复

lsattr 文件/目录    查看文件或目录的隐藏属性

示例
touch uosfile
lsattr uosfile

chattr +i uosfile   不能修改,不能删除
lsattr uosfile

chattr -i +a uosfile
lsattr uosfile
echo 123 > uosfile
echo 123 >> uosfile	    只能追加,不能删除

chattr -a uosfile 
rm uosfile

文件访问控制列表
ACL可以为某个文件单独设置该文件具体的某用户或组的权限。

命令格式为:
getfacl <文件名> 获取文件的访问控制信息
setfacl 设置文件的acl
-m 修改文件的acl
-x 取消用户或组对文件的权限

示例:
setfacl –m u:用户名:权限 <文件名> //设置某用户名的访问权限
setfacl –m g:组名:权限 <文件名> //设置某个组的访问权限
setfacl –x u:用户名 <文件名> //取消某用户名的访问权限
setfacl –x g:组名 <文件名> //取消某个组的访问权限

实验:
touch /var/log/uos.log
getfacl /var/log/uos.log
su - uos
vim /var/log/uos.log //不能更改
setfacl -m u:uos:rwx /var/log/uos.log
su - uos
vim /var/log/uos.log //可以进行更改
setfacl -x u:uos /var/log/uos.log

软链接(符号链接)
为源文件创建了一个新的指针。当对软链接操作时,系统就会找到原文件并对原文件进行操作(与Windows的快捷方式类似)。

语法:
ln –s <源文件> <新建链接名>

硬链接
硬链接文件完全等同于原文件,原文件名和连接文件都指向相同的物理地址

语法:
ln <源文件> <新建链接名>

硬连接的描述
不可跨文件系统创建硬连接,也不可为目录建立硬链接。
文件在磁盘中的数据是唯一的,这样就可以节省硬盘空间
由于只有当删除文件的最后一个节点时,文件才能真正从磁盘空间中消除,因此可以防止不必要的误删除。

实验:
touch uosfile
cp uosfile uosfile1
ln -s uosfile uosfile2 #软连接
ln uosfile uosfile3 #硬连接
echo uossystem > uosfile

linux下递归删除目录下所有.o文件

可以一次性删除某目录及其子目录下所有的.0文件。

find . -name '*.o' -type f -print -exec rm -rf {} \;

(1) “.” 表示从当前目录开始递归查找

(2) “ -name ‘*.o’ "根据名称来查找,要查找所有以.exe结尾的文件夹或者文件

(3) " -type f "查找的类型为文件

(4) “-print” 输出查找的文件目录名

(5) 最主要的是是-exec了,-exec选项后边跟着一个所要执行的命令,表示将find出来的文件或目录执行该命令。

 exec选项后面跟随着所要执行的命令或脚本,然后是一对儿{},一个空格和一个\,最后是一个分号

四.目录管理

Linux系统的目录组成类拟一个倒置的树型结构,它以一个名为根(“/”)的目录开始向下延伸。
它不同与其它操作系统。例如windows,在windows中,它有多少分区那么就有多少个根,而这些根之间是并列的,而在Linux中无论有多少个分区都有一个根。

在Linux系统中对应的文件类型字符为“d”。
目录是一种特殊的文件
目录上的读写执行权限与普通文件有所不同。
读:用户可以读取目录内的文件
写:单独使用没有作用。它与读和执行权限连用可以在目录内添加与删除任何文件。
执行:用户可以进入目录,调用目录内的资料

常见目录:
/bin 存储常用用户指令。
/boot 存放用于系统引导时使用的各种文件
/dev 存放设备文件
/etc 存放系统、服务的配置目录与文件
/home 存放用户家目录
/lib 存放库文件,如内核模块、共享库等
/usr 存放系统应用程序目录i

setuid
设置使文件在执行阶段具有文件所有者的权限(例如:/usr/bin/passwd);如果一般用户执行该文件, 则在执行过程中, 该文件可以获得root权
语法:
chmod u±s <文件名>

setgid
该权限只对目录有效,目录被设置该位后, 任何用户在此目录下创建的文件都具有和该目录所属的组相同的组
语法:
chmod g±s <目录名>

u+s实验:
su - uos1
touch /root/file #权限禁止
chmod u+s /usr/bin/touch #给touch设置强制位setuid之后就可以以root身份去执行
su - uos
touch /root/file #权限允许
切回root查看

g+s实验:
mkdir uos1 //创建目录/uos 并设置所属组为uos
chown :uos /uos1/
touch /uos1/1.txt //新创建文件、可以看到其属组还是属于创建者的
chmod g+s /root/uos1/ //为属组添加强制位setgid
touch /uos/2.txt //可以看到新建的文件会自动继承此前目录的属组

o+t实验:
useradd -m -s /bin/bash uos1
mkdir /tx
chmod o=rwx /tx/
touch /tx/uos1
su - uos1
rm /tx/uos1 //是可以删除的

exit   注销
chmod o+t /tx/
touch /tx/uos2
su - uos1
rm  /tx/uos2 
rm: 无法删除'/tx/uos1': 不允许的操作  //加上t权限之后就不可以删除其他人的文件

umask:控制新建的文件或目录的权限
umask值与新建文件、目录权限对照表
umask值 目录权限值 文件权限值
0 7 6
1 6 6
2 5 4
3 4 4
4 3 2
5 2 2
6 1 0
7 0 0
例如:umask 值为 0000,则目录权限值 777,文件权限值 666
umask 值为 0022,则目录权限值 755,文件权限值 644

实验:
umask
0022 //当前umask掩码是0022,新创建文件的权限是644,目录的权限是755
touch file1
mkdir di1
ls -l

umask 0027  //将umask掩码修改为0027之后,新建文件的权限是640,目录的权限是750
touch file2
mkdir di2
ls -l

五.系统交互工具与编辑器

常用的交互工具

实验要求:
除管理员root用户外,新建普通用户uos1
使用tty1登录root用户,tty2登录uos1

write命令 指定一个在线用户发送短消息
//使用root用户对uos1用户发送消息
root@uos1-PC:~# write uos1
write: write: you have write permission turned off.
aaaaaaaaaaa
aaaaaaaaaaa
ctrl+d 结束
//去uos1用户验证查看

wall命令 向所有在线用户广播
//使用root用户对所有用户发送消息
root@uos1-PC:~# wall 123456789

//客户端验证接收

vim编辑器:
vi编辑器是所有Unix和Linux系统下标准的编辑器,相当于Windows的记事本一样,它工作在字符模式,由于不需要图形界面,所以效率高;vim是vi编辑器的升级版本,除了兼容vi的所有指令以外,还添加了许多重要的特性,例如支持正则搜索,语法高亮,对C语言的自动缩进等;

vim的三种模式:
命令模式(其它模式->ESC):
控制光标移动,删除字符,段落复制

编辑/插入模式(命令模式->a、i、o、A、I、O)
    新增文字及修改文字

末行模式(命令模式-> :)
    保存文件,离开vi,以及其他设置

vim基础操作
vim --help 查看帮助

命令模式:
    yy  复制当前行正行 	
    nyy 复制从光标所在行开始的n行
    dd  剪切当前光标所在行   	
    ndd 剪切从光标所在行开始的n行
    p   粘贴光标位置之后   
    G   跳转至尾行
    g   跳转至首行    
    dw  删至词尾
    ndw 删除后n个词
    d$  删至行尾
    nd$ 删除后n行(从光标当前处开始算起)        
    u   撤销上一次修改
    U   撤销一行内的所有修改

末行模式
    :r /etc/passwd  读文件内容进vim
    :r! ls -l / 读命令结果保存到文件中
    :set number 行号
    :set nonumber   去除行号
    :s/old/new/g    在当前行中查找到的所有字符串old替换为new
    :2,6s/old/new/g 2-6行替换
    :%s/old/new/g   在整个文件范围内替换
    :X  加入密码
    :q  不保存退出
    :q! 强制退出不保存
    :wq 保存退出,同x
    :wq!    强制保存退出
进入编辑模式
    a   光标后插入
    i   当前光标前插入
    o   在当前光标下插入空行
    A   在光标所在行尾插入 
    I   在光标行首插入内容
    O   在当前光标上插入空行

修改vim配置
echo “:set number” >> /etc/vim/vimrc
vim /etc/passwd

实验-非正常关闭vim的恢复
vim uos 直接关闭终端
ls -la
vim uos 会有提示信息
删除同目录下面同名的隐藏文件即可

六.系统文件查找与文件管理

可执行文件的搜索
which <指令> 显示一个指令的完整路径与别名。
whereis <指令> 搜索一个指令的完整路径以及其帮助文件

locate 用于查找文件或目录,比find命令快,是因为不回去搜索目录,而是搜索一个数据库/var/lib/mlocate/mlocate.db,这个库有本地所有文件信息,Linux会自动创建这个数据库,每天自动更新一次,因此,我们在用whereis和locate 查找文件时,有时会找到已经被删除的数据,或者刚刚建立文件,却无法查找到,原因就是因为数据库文件没有被更新。为了避免这种情况,可以在使用locate之前,先使用updatedb命令,手动更新数据库
apt-get install locate -y
updatedb
locate passwd

find 在指定目录下查找文件
特点:
从指定路径下递归向下搜索文件。
支持按照各种条件方式搜索。
支持对搜索得到的文件再进一步的使用指令操作(例如:删除、统计大小、复制等)
常用选项:
-name 根据文件名寻找文件
-user 根据文件拥有者寻找文件
-group 根据文件所属组寻找文件
-perm 根据文件权限寻找文件
-size 根据文件大小寻找文件[±Sizek]
-type 根据文件类型寻找文件,常见类型有: f(普通文件) 、c(字符设备文件)、b(块设备文件)、l(连接文件)、d(目录)
-o 表达式或
-a 表达式与

示例:
find / -name uos1
find / -user hehe
find / -group xiaolizi
find / -perm 644
find / -size +10k
find /etc -size -10k
find /etc -type f/c/b/l/d

对文件进一步操作
find [路径] [参数] [表达式] -exec 指令 {} \;
{}代表find找到的文件
;命令结束标志,由于各个系统中的;会有不同的意义,所以前面加\转义
示例:
find /tmp/ -type f -exec rm -rf {} ; 用exec选项执行cp命令

grep 查找文件里符合条件的字符串。
常用选项:
-c 计算匹配关键字的行数
-i 忽略字符大小写的差别
-n 显示匹配的行及其行号
-s 不显示不存在或不匹配文本的错误信息
-h 查询多个文件时不显示文件名
-l 查询文件时只显示匹配字符所在的文件名
-v 取反
–color=auto
示例:
grep root /etc/passwd
grep ^root /etc/passwd
grep bash$ /etc/passwd
grep -i ROOT /etc/passwd

tar 文件归档压缩
功能说明:用于建立、还原备份文件的工具,它也可以加入或解开备份文件内的文件。有时也称之为“打包”。
常用选项:
c 建立新的备份文件
v 显示指令执行过程
x 解包
t 显示tar文件的内容
z 用gzip压缩或解压文件,以.tar.gz或.tgz为后缀
j 用bzip压缩或解压文件,以.tar.bz2为后缀
f 指定要操作的文件
-C 指定解压目录

示例:
tar czvf date +%F.log.tar.gz /var/log/ #以时间为名称打包
tar xzvf 2016-03-09.log.tar.gz -C /tmp/ #-C指定解压目录

gzip 压缩
gunzip或gzip -d解压
只能压缩文件,不能压缩目录;后缀名为.gz,而且不保留原文件

bzip2压缩
bunzip2或bzip2 -d解压
压缩文件,-k参数可以保留原文件;后缀为.bz2

七.输入,输出及重定向

Linux标准输入设备是键盘,标准输出设备是显示器,标准错误输出指的是显示器
设备 设备名 文件描述符 类型
键盘 /dev/stdin 0 标准输入
显示器 /dev/stdout 1 标准输出
显示器 /dev/stderr 2 标准错误输出

输出重定向:把要输出到显示器的内容,输出到文件中;>表示覆盖写入 >>追加写入
示例:
echo uos > test
cat test
echo bing > test
cat test
echo txuos >> test
cat test

错误重定向:2>错误重定向
示例:
wadwadwad 2> test
cat test

双重输出重定向
find / -user uos > test
cat test
find / -name passwd >file 2> test #将正确的输出结果与错误输出结果一次性单独地送到不同的地方
cat test
cat file

如果用户将不管是正确输出还是错误输结果都送到同一个指定的地方则可使用“&> 或 &>>” 来完成。
find / -name passwd &> test
cat test

find / -name passwd > test 2>&1		#脚本里使用,将错误结果也输入进文件里
cat test

输入重定向:不使用标准输入端口输入文件,而是使用指定的文件作为标准输入设备;使用“<”来重定向输入源;使用 << 让系统将一次键盘的全部输入,先送入虚拟的‘当前文档’,然后一次性输入。
cat > ok << EOF #交互式
123
456
EOF #结束符
cat ok

管道符号|:将前一个命令的执行结果作为后一个命令的执行参数
cat /etc/passwd | grep root
cat /etc/passwd | grep ^root

文件操作命令
more 文件分页查看,空格向下一屏,Ctrl+B 返回上一屏
less 文件分页查看, 使用[pageup] [pagedown]来往前往后翻看文件,回车一行,空格翻页,q退出

head /etc/passwd    默认前10行		
head -5 /etc/passwd
tail /etc/passwd    默认后10行
tail -n 5 /etc/passwd
tail -f /var/log/message    实时监测文件
wc -l /etc/passwd   显示行数
sort -rnk 3 -t : /etc/passwd    
    -r 以相反的顺序来排序
    -n依照数值的大小排序
    k是指按照那一列进行排序
    -t <分隔字符>指定排序时所用的栏位分隔字符。
uniq -c uosfile 
    -c 在每行旁边显示该行重复出现的次数
sort uosfile | uniq -c
    -r 以相反排序
df -Th | grep sda2 | tr -s " " | cut -d " " -f 6 | cut -d "%" -f 1      cut -d自定义分隔符,-f分隔符后第几行, tr -s 把连续重复的字符以单独一个字符表示
paste file1 file2 file3	    把每个文件以列对列的方式,一列列地加以合并

八.软件包的安装与使用

dpkg:Debian Linux系统用来安装、创建和管理软件包的实用工具

dpkg -l			#显示安装软件列表
dpkg -l vsftpd          	#查看是否安装vsftpd
cd /home/uos/Desktop
wget http://ftp.de.debian.org/debian/pool/main/v/vsftpd/vsftpd_3.0.3-12_amd64.deb       桌面版可直接双击安装
dpkg -I /home/qin/Desktop/vsftpd_3.0.3-12_amd64.deb     --info查看软件包信息
dpkg -c /home/qin/Desktop/vsftpd_3.0.3-12_amd64.deb     --contents列出 deb 包的内容
dpkg -i /home/qin/Desktop/vsftpd_3.0.3-12_amd64.deb     安装软件包
dpkg -L vsftpd      查询vsftpd安装的文件
dpkg -s vsftpd      查询vsftpd的详细信息
dpkg -r vsftpd      --remove删除软件包,不清理配置文件
dpkg -P vsftpd      --purge删除软件包,清理配置文件


wget http://mirrors.163.com/deepin/pool/main/a/apache2/apache2_2.4.33-4deepin_amd64.deb
dpkg -i apache2_2.4.33-4deepin_amd64.deb    报错,存在依赖关系

apt(Advanced Packaging Tool)包管理工具
update - 更新可用软件包列表
upgrade - 通过 安装/升级 软件来更新系统

apt install apache2	    报错,因为之前安装apache2和apache2-bin的残留
dpkg -P apache2 
apt install -y apache2
apt list        列出所有可安装软件
apt search uos      查询软件
apt show apache2    查询apache2的详细信息
apt remove apache2  删除软件包,不清理配置文件
apt purge apache2   删除软件包,清理配置文件
apt autoremove      自动删除不需要的包,例如apache2删除后的依赖包
apt install -f      不解决依赖关系,强制安装

获取deb包 (用外网提取deb包,内网安装)
apt purge -y apache2 #会同时清除软件包和软件的配置文件
apt autoremove -y #自动删除不需要的包,例如apache2删除后的依赖包
apt clean #删除包缓存中的所有包
ls -l /var/cache/apt/archives/ #包缓存已清空
apt install -d -y apache2 #把包下载到缓存中而不安装
mkdir /home/qin/Desktop/apache2
cp /var/cache/apt/archives/.deb /home/qin/Desktop/apache2
dpkg -i /home/qin/Desktop/apache2/
.deb #安装软件包
systemctl start apache2
systemctl status apache2

源码包安装
wget http://nginx.org/download/nginx-1.14.2.tar.gz
tar xzvf nginx-1.14.2.tar.gz -C /tmp
./configure --help
./configure --prefix=/usr/local/nginx --without-http_rewrite_module --without-http_gzip_module
make && make install
/usr/local/nginx/sbin/nginx
netstat -upant | grep nginx

九.系统监控及进程管理

查询系统信息:
uname 显示系统信息
uname -r 输出内核发行号
uname -a 详细显示操作系统信息

查看/修改主机名:
hostname 查看主机名
hostname uossystem 临时修改主机名
vim /etc/hostname 永久修改主机名

查看最近用户登录:
last 查看最近登录的用户
lastlog 查看所有用户的最近登录情况

查看进程:
ps aux 查看进程信息
a 表示所有关联到终端的进程,如果同时使用 x 则代表所有进程;
u 表示列出进程的用户

ps aux 返回详解:
USER    该进程是哪个用户运行的   
PID     进程ID号
%CPU    占用的CPU百分比
%MEM    占用的内存百分比   
VSZ     占用的虚拟内存(KB)  
RSS     占用的物理内存大小(KB)
TTY     在哪个终端运行的;
        tty1-tty6是本地字符界面终端;
        pts/0~255表示虚拟终端,一般是远程连接的终端;
        ?表示不属于任何终端,是由系统启动的
STAT    进程状态
START   进程的启动时间  
TIME    进程占用CPU的运算时间,注意不是系统时间 
COMMAND 所执行的指令

Linux进程的五种状态
R 运行状态:正在运行或在运行队列中等待
S 休眠状态,可中断:在等待某个条件的形成或接收到信号
D 不可中断状态:指的并不是CPU不响应外部硬件的中断,而是不响应异步信号;通常是长时间I/O等待引起
Z 僵死状态:进程已终止,但进程描述符存在,直到父进程调用wait4()系统调用后释放
T 停止状态:处于后台挂起或暂停状态,如:使用ctrl+z后台挂起就会产生该状态进程

状态后缀:
<:优先级高的进程
N:优先级低的进程
L:有些页被锁进内存
s:进程的领导者(在它之下有子进程)
l:多线程
+:位于后台的进程组

free查看系统内存使用状况
free -m 以MB为单位显示内存使用情况;-g是以GB为单位;默认是按照KB为单位
total 物理内存总量
used 已用物理内存量
free 空闲物理内存量
shared 被共享使用的物理内存大小
buff/cache 表示磁盘缓存的大小
available 还可以被应用程序使用的物理内存大小,available = free + buffer + cache

top系统监视器
第一行:系统当前时间 系统运行时间 当前用户登陆数 CPU平均负载(这里有三个数值,分别是系统最近1分钟,5分钟,15分钟的平均负载)
第二行:total进程总数、 running正在运行的进程数、 sleeping睡眠的进程数、stopped停止的进程数、 zombie僵尸进程数。
第三行:CPU使用率
%us 用户空间占用CPU百分比
%sy 系统内核占用CPU百分比
%ni 调整过用户态优先级的进程的CPU时间占比
%id 空闲的CPU百分比
%wa 等待I/O完成的CPU时间百分比
%hi 指的是cpu处理硬件中断的时间
%si 指的是cpu处理软中断的时间
%st 当Linux系统是在虚拟机中运行时,等待CPU资源的时间占比
通常id%值可以反映一个系统cpu的闲忙程度

第四、五行:物理内存和swap使用情况
第六行:进程详细信息
PID 进程PID号
USER    运行进程的用户
PR  从系统内核角度看的进程调度优先级
NI  进程的nice值,即从用户空间角度看的进程优先级。值越低,优先级越高
VIRT    进程申请使用的虚拟内存量
RES 进程使用的物理内存量
SHR 进程使用的共享内存量
S   进程状态
%CPU    CPU占用百分比
%MEM    物理内存占用百分
TIME+   进程创建后至今占用的CPU时间
COMMAND 运行进程使用的命令

top常用快捷键
    h   查看帮助信息
    q   退出top
    k   杀掉进程
    N   按照PID对进程排序。
    M   按%MEM对进程排序。
    P   按%CPU对进程排序。
    T   按TIME+对进程排序

kill终止进程
kill -l 查看所有信号

常用信号
    1(HUP):重新加载进程
    9(KILL):强制杀死进程
    15(TERM):正常停止一个进程

前台进程和后台后台进程
前台进程:一个命令执行后,独占shell终端,并拒绝其他输入
后台进程又称为守护进程,不受终端控制

示例:
ping www.baidu.com
ctrl+z 将当前正在运行的命令放入后台并挂起(暂停)
ctrl+c 终止前台进程

ping www.baidu.com &    &表示将当前执行的命令放入后台并继续运行
jobs    查看后台进程
fg 1    fg [%作业号]	前台恢复运行
kill -9 %2  kill [%作业号] 	给对应的进程发送终止信号

lsof:查看进程打开的文件或打开文件的进程

示例:
lsof -p 1359 查看某个进程打开的所有文件
lsof -u root 查看某个用户打开的所有文件
lsof -u ^root 查看不是某个用户打开的文件,也就是取反,在用户名前加^
lsof /dev/null 查看某个文件被哪些进程打开使用
lsof -i:22 查看某个端口的使用情况

十.服务与计划任务

systemd 是一个专用于 Linux 操作系统的系统与服务管理器;当作为启动进程(PID=1)运行时;它将作为初始化系统运行,也就是启动并维护各种用户空间的服务(pstree查看)

systemctl是Systemd的主命令,用于管理系统。
查看系统服务
systemctl list-units 查看所有系统服务
systemctl list-units --all | grep ssh 单独查看apache2服务
设置系统运行级别
systemctl get-default 查看默认运行级别
systemctl isolate runlevel3.target 启动运行等级3
systemctl isolate runlevel5.target 图形界面
systemctl list-unit-files --type target | grep runleve 查看所有type target

systemctl控制服务
apt install apache2
systemctl status apache2
cat /lib/systemd/system/apache2.service apache2服务启动文件
systemctl start apache2
ps aux | grep apache2 ps aux 查看进程
systemctl stop apache2
systemctl restart apache2
systemctl enable apache2 开机自启动
/etc/systemd/system/multi-user.target.wants/apache2.service enable其实是是建立apache2服务软链接
systemctl disable apache2 取消开机自启动
systemctl mask apache2 屏蔽服务,永远不能启动
systemctl unmask apache2 取消屏蔽

ssh远程及scp远程拷贝
dpkg -l | grep ssh #默认安装openssh-client

vim /etc/ssh/sshd_config
PermitRootLogin yes	    开启root用户远程连接权限
systemctl restart sshd	

ssh 192.168.200.202	    测试,不加用户名默认你当前什么身份连的以什么身份链接
ssh root@192.168.200.202

touch /tmp/uosfile
scp /tmp/uosfile 192.168.200.202:/root/Desktop/qintest
scp -r 192.168.200.202:/home /tmp/

ssh免密码登录
server1:
ssh-keygen 一直回车
ssh-copy-id root@192.168.200.202
server2验证
cat ~/.ssh/authorized_keys server1的公钥已添加

server1
    ssh root@192.168.200.202    无密码可登录

cron计划任务

格式:
* * * * * command
分(0-59) 时(0-23) 日(一个月中的第几天1-31) 月(1-12) 星(星期几0-7,0/7都表示周日) 需要执行的命令

符号含义
* 表示该范围内的任意时间
, 表示间隔的多个不连续时间点,例如,“1,2,5,7,8,9”
- 表示一个连续的时间范围,例如“2-6”表示“2,3,4,5,6”
/ 指定间隔的时间频率,例如“0-23/2”表示每两小时执行一次

示例:
0 17 * * 1-5 周一到周五每天17:00
30 8 * * 1,3,5 每周一、三、五的8点30分
0 8-18/2 * * * 8点到18点之间每隔2小时
0 * */3 * * 每隔3天

实验:
touch /tmp/uosfile
crontab -e -u root 第一次使用crontab -e时需选择编辑器,vim.basic完整版的vim;vim.tiny是tiny版本的vim,功能比较少
*/1 * * * * echo “UOS SYSTEM” >> /tmp/uosfile

crontab -l -u root  查看某用户的计划任务列表,不指定用户则查看当前用户

十一.linux启动流程

Linux的启动流程
开机自检:设备开机时,会有滴一声,自检开始,主要是检查计算机硬件,如:CPU,内存,主板,显卡等设备是否有故障
加载BIOS:BIOS自检,首先会在一个Boot Sequence程序中搜索可以让系统启动的引导设备(比如我们有时在BIOS中设置为从硬盘启动,或者从CD-ROM启动等等),如果BIOS找不到可以引导的设备及相关程序后,便会启动失败,如果找到相关硬盘设备,则BIOS将控制权交给启动设备中的MBR主引导记录
读取MBR主引导记录:大小为512字节,存放预启动信息、分区表等信息
grub引导菜单:系统读取内存中的grub配置信息,并依照此配置信息来启动不同的操作系统
加载kernel内核:根据grub设定的内核映像所在路径,系统读取内存映像,并进行解压缩操作(内核文件都是以一种自解压的压缩格式存储以节省空间,存储于/boot目录下),自解压完成,则加载init(systemd)
init初始化(systemd所有进程的父进程):初始化系统环境
启动内核模块

破解root密码
开机按"e"键,进入grub引导菜单
找到linux vmlinuz-* 开头的行在末尾添加rw init=/bin/bash
按ctrl+x或F10继续启动
passwd root
reboot -f 或手动重启

防止破密码:增加grub口令
grub-mkpasswd-pbkdf2 #输入密码,使用伪随机函数生成密钥grub.pbkdf2.sha512.10000…
vim /etc/grub.d/40_custom
set superusers=“uos”
password_pbkdf2 uos grub.pbkdf2.sha512.10000.6D67AA5F717AFE93D368A57804BC21B136DCA9D30CBA6F74D9ABCBA32E76B59758E04A5D0A766734EDE586DEA2EC3E7F786F127FB55C7922826455612B5406F5.30060B65CA1D5736364D109C7CB6459E5E2851EFF460E43D72AAB8A592784B2D5353D9B51EE1EAFBC45AF739417CFC5EC12EE92D546E9BC6A7BB58444BC27455

update-grub
重启验证

启动修复
rm -rf /boot/*
关机BIOS设置光盘启动,点击install UOS后,按ctrl+alt+f2进入命令行模式
sudo mount /dev/sda2 /mnt(随便挂) 挂载根分区
sudo mount /dev/sda1 /mnt/boot 挂载/boot分区
sudo mount --bind /dev /mnt/dev 硬件设备,bind绑定(目录挂载到目录)
sudo mount --bind /proc /mnt/proc
sudo mount --bind /sys /mnt/sys
sudo cp -rf /boot/* /mnt/boot/ 将光盘引导/boot复制到系统/boot
sudo chroot /mnt 把根目录换成指定的目的目录
grub-install /dev/sda 将GRUB安装到指定硬盘或分区上
update-grub 恢复grub.conf
exit
reboot 选择硬盘启动

十二.网络管理

查看IP的几种方法:
ip addr show
ifconfig
nmcli connection show 有线连接 查看网卡连接信息

device管理
nmcli device show 查看网卡设备
添加一块网卡
nmcli device show | grep -i device | grep -v lo
nmcli device connect ens37 #链接网卡设备,物理连接
nmcli device disconnect ens37 #关闭网卡设备

修该网卡默认命名规则(不想用ens33命名规则)
vim /etc/default/grub
GRUB_CMDLINE_LINUX=“net.ifnames=0 biosdevname=0” 更改为eth0的命名规则
update-grub
shutdown -r now

配置ip地址
uos系统的网卡配置统一采用nmcli系列命令
配置文件位于/etc/NetworkManager/system-connections/目录

nmcli  connection show
nmcli connection delete ens33	#删除配置文件

nmcli connection add type ethernet con-name ens33 ifname ens33 connection.autoconnect yes   重新生成配置文件并设置自动连接
#type类型 ethernet以太网卡,con-name 配置文件名字,ifname 设备名字,connection.autoconnect自动连接,可加可不加,一般都加上

nmcli connection modify ens33 ipv4.method manual ipv4.addresses 192.168.200.201/24 ipv4.gateway 192.168.200.2 ipv4.dns 114.114.114.114 connection.autoconnect yes
#modfiy修改配置文件,manual手动修改

nmcli connection up ens33	#启动配置文件
systemctl restart NetworkManager	#重启服务查看

临时配置IP地址
ifconfig
ifconfig ens33 192.168.200.201/24
ifconfig
nmcli connection down ens33 #恢复
nmcli connection up ens33

一个网卡绑定多个ip地址
nmcli connection modify ens33 ipv4.method manual +ipv4.addresses "10.0.0.1/24
nmcli connection down ens33
nmcli connection up ens33
ip addr show

ipv6地址
nmcli connection delete ens33
nmcli connection modify 有线连接 ipv6.method manual ipv6.addresses 2001::1/64
nmcli connection down 有线连接
nmcli connection up 有线连接
ping6 2001::1

十三.磁盘管理

磁盘分区
添加一块5G的磁盘
fdisk -l
fdisk /dev/sdb
n p 1 回车 +1G
w
#最多创建4个主分区,要想更多创建扩展分区
mkfs.xfs /dev/sdb1 格式化为xfs格式
mkdir /sdb1
mount /dev/sdb1 /sdb1
df -h

mount磁盘挂载
lsblk #树型结构显示分区信息
blkid /dev/sda3 #已格式化分区的UUID和文件系统
mkdir /cipan
mount /dev/sda3 /cipan/
df -h

swap分区
fdisk /dev/sdc
mkswap /dev/sdc2 #建立交换分区
swapon -a #将/etc/fstab文件中所设置为swap的设备开启
swapon /dev/sdc2 #开启交换分区
swapon -s #显示交换分区的信息

vim /etc/fstab
UUID=“246cb701-407c-4410-8fc0-106f224ac884” none swap defaults 0 0
要自动开启交换区,可以把新的分区加入到/etc/fstab中

实验-lvm逻辑卷
新建两个空白分区
pvs #查看
pvcreate /dev/sdb2 /dev/sdb3 #建立物理卷

vgs
vgcreate uosvg /dev/sdb2 /dev/sdb3	#建立卷组
vgs
lvcreate -L 1.9G uosvg -n uoslv		#分割LV逻辑卷出来
lvs
mkfs.xfs /dev/uosvg/uoslv 
mkdir /uos
mount /dev/uosvg/uoslv /uos/
df -h

raid磁盘阵列:保护硬盘和固态硬盘上应用程序数据的常用方法
RAID0磁盘条带化(将存储数据的负载分散到了更多的物理驱动器上):
最少需要两块磁盘
数据条带式分布
没有冗余,性能最佳(不存储镜像、校验信息)
不能应用于对数据安全性要求高的场合

RAID1磁盘镜像(所有数据都被写入两个独立的物理磁盘。磁盘本质上是彼此的镜像。如果一个磁盘出现故障,可以使用另一个磁盘来检索数据):
    最少需要2块磁盘
    提供数据块冗余
    所需磁盘空间增加了一倍

RAID5奇偶校验:
    最少3块磁盘
    数据条带形式分布
    以奇偶校验作冗余
    适合多读少写的情景,是性能与数据冗余最佳的折中方案

RAID 10(又叫RAID 1+0):
    最少需要4块磁盘
    先按RAID0分成两组,再分别对两组按RAID 1方式镜像
    兼顾冗余(提供镜像存储)和性能(数据条带形分布)
    在实际应用中较为常用

mdadm选项:

   -C: 创建模
          -n #: 使用几个块设备来创建此RAID
          -l #:指明要创建的RAID的级别
          -a {yes|no}:自动创建目标RAID设备的设备文件
          -c CHUNK_SIZE: 指明块大小,单位k
          -x #: 指明空闲盘的个数

   -D:显示raid的详细信息

管理模式:
-f: 标记指定磁盘为损坏
-a: 添加磁盘
-r: 移除磁盘

raid0
添加2块磁盘,并分区
fdisk -l | grep “Disk /dev/sd”
mdadm -C /dev/md0 -a yes -l 0 -n 2 /dev/sdb1 /dev/sdc1 #创建新的软raid
mkfs.xfs /dev/md0
mkdir /mnt/md0
mount /dev/md0 /mnt/md0
dd if=/dev/zero of=/mnt/md0/md0test bs=1M count=500
df - Th
mdadm -D /dev/md0 #输出指定raid详细信息

实验-raid1
mdadm -C /dev/md1 -a yes -l 1 -n 2 /dev/sdb2 /dev/sdc2
mkfs.xfs /dev/md1
mkdir /mnt/md1
mount /dev/md1 /mnt/md1
dd if=/dev/zero of=/mnt/md1/md1test bs=1M count=500
df -Th
mdadm -D /dev/md1

实验-raid5
mdadm -C /dev/md5 -a yes -l 5 -n 3 /dev/sdb3 /dev/sdc3 /dev/sdd3
mkfs.xfs /dev/md5
mkdir /mnt/md5
mount /dev/md5 /mnt/md5
dd if=/dev/zero of=/mnt/md5/md5test bs=1M count=500
df -Th
mdadm -D /dev/md5

实验-raid5坏1块硬盘
dd if=/dev/zero of=/mnt/md5/md5file bs=1M count=1000
df -Th
umount /mnt/md5
mdadm /dev/md5 -f /dev/sdd3 #模拟/dev/sdd3为坏盘
mdadm -D /dev/md5
mount /dev/md5 /mnt/md5/
ls -l /mnt/md5/
df -Th
mdadm /dev/md5 -r /dev/sdd3 #热拔/dev/sdd3
mdadm -D /dev/md5 #显示仅剩2块硬盘
mdadm /dev/md5 -a /dev/sdd3 #热插/dev/sdd3
mdadm -D /dev/md5 #快速查看可看到同步数据百分比变化
mount /dev/md5 /mnt/md5
ls -l /mnt/md5

实验-raid5热备
mdadm -C /dev/md5x -a yes -l 5 -n 3 -x 1 /dev/sdb4 /dev/sdc4 /dev/sdd4 /dev/sde4 #x指明空闲盘个数
mkfs.xfs /dev/md5x
mkdir /mnt/md5x
mount /dev/md5x /mnt/md5x
dd if=/dev/zero of=/mnt/md5x/md5xtest bs=1M count=500
df -Th
mdadm -D /dev/md6 #自动更换

setcap

赋予testdemo root权限

sudo setcap cap_sys_rawio,cap_sys_admin+eip /home/testdemo
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值