admin 管理员组

文章数量: 887021

1 查看Linux系统版本号
cat /etc/centos-release
cat /etc/issue
2 查看内核版本号
cat /proc/version 或者 username -r
3查看计算机主机名
hostname

查看主机ip的几种方法

hostname -i 查看主机的ip
ip a 查看主机的ip
ifconfig 查看主机的ip

windows的盘符可以比喻一颗颗树,
linux 的盘符是一颗倒立的大叔,所有的路径都是从/根目录开始

/bin binary 二进制可执行命令,常用的linux操作命令在此文件夹下
/boot linux操作系统的目录,linux的核心,一般不要去操作它
/dev 硬件信息的目录
/etc 系统的或者软件的配置文件目录
/home 家目录 类似于win 下我的文档
/media 默认光盘挂载的目录 光盘的信息从这里查看
/root root用户的家目录
/sbin super binary 需要超级权限的命令
/usr 用户操作目录 /usr/local安装软件会选择这里
/var /var/log 一般系统等软件的日志信息在这里

windows 下cmd命令行 dos命令行

ipconfig

Linux shell命令行

pwd 显示当前工作目录

Linux基本常用的命令

pwd print work directory 显示当前目录的路径
ls 短信息格式显示目录结构
ls -l 长信息格式显示目录结构
ll ================= >ls -l
运行模式
linux 默认拥有7种运行模式
语法 : init 模式编号
shell> init 0|3|5|6
0表示关机
1 表示单用户模式
2 表示多用户模式
3 表示切换到命令行模式 服务一般处于这种模式
4 表示未被使用的模式
5表示切换到桌面模式
6 表示重启

用户切换
通过某一个用户登录,可以使用su命令切换另外的用户身份
语法: su switch user 切换用户

用户当前身份

whoami 用户当前身份

————————————————————————————————————————

who am i 用户真实身份

目录切换
cd 切换目录 配合pwd使用
./当前目录
../上级目录
绝对路径 从/根目录开始的完整路径
相对路径 当前操作目录开始

① 绝对路径方式 cd /root
② 相对路径 cd ../../root
列: 当前操作目录为/usr/local 需要切换到/usr/local/mysql
① 绝对路径方式 cd /usr/local/mysql
② 相对路径 cd mysql

文件/文件夹操作
linux的文件夹操作
① 创建 添加 新建

语法 :mkdir 路径及其名称

②移动 重命名

语法 :mv 现路径 移动到的路径

③复制

语法 : cp 复制路径 复制到的路径
-R递归进行操作

④ 删除

语法 :rm 删除路径
-r 递归删除目录

文件操作
①创建 添加 新建

语法 : touch 路径名称
touch it.txt

②移动 重命名

mv 移动路径 移动到的路径
mv it.txt itphp.txt

③ 复制

语法:cp 复制路径 复制到的路径
cp it.txt it.txt

④删除

语法:rm 路径名称
-f 强制删除 不提示

其他命令

shell> ctrl+c 终结当前操作
shell> ctrl+a 回到命令行的首部
shell> ↑+↓ 进行翻看之前执行过的命令
shell>history //查看之前执行过的命令
shell> Tab 补全命令 可以节省写入字符的长度

文件操作

shell >覆盖写 会写在同一行,把原来的内容替换掉
echo 1 > 1.txt
shell>> 追加写 不会覆盖以前原有的内容
echo 4 >> 1.txt
cat 查看文件所有的内容
more filename //回车方式逐行查看文件的内容
less filename //上下左右键 查看文件的各个部分内容
head -n filename //查看文件前n行的内容
tail -n filename //查看文件最末尾n行的内容
tail -f filename //查看文件末尾最后10行的内容
tailf filename //查看文件末尾最后10行的内容
wc -l filename //计算文件行数 word count


vim 编辑器
vim 编辑器里不要使用数字小键盘 ,会出现不一样的效果
vim编辑器三种模式

命令行模式
① vim 文件路径 直接打开文件
②vim +行号 打开文件的指定行号
光标移动
最简单的操作 可以通过键盘的上下左右方向键进行操作
① 字符级 上k 下j 左 h 右 l
② 单词级 b上个单词首字母 w下个单词首字母 e 下个单词的尾字母
③ 行级 0 行首 $ 行尾
④段落级 {段落首部 }段落尾部
⑤屏幕级 H屏幕首部 L屏幕尾部
⑥ 文档级 G 文档尾行 1G文件首行 nG文档第n行

删除
dd 删除光标所在行
n+ dd 删除光标所在行的以下几行
删除类似于剪切操作,可以通过p命令把删除的内容再粘贴出来

复制
yy 复制光标所在行
n+yy 复制光标所在行的以下几行
p 粘贴出来

编辑模式
从命令模式进入到编辑模式
① a 光标所在行字符后
② i 光标所在行
③ o 光标所在行的另起一行
④ s 光标做在行,并删除光标所在行的字符
从编辑模式回到命令模式 通过键盘左上角的ESC键
尾行模式
保存文件 退出编辑器,都需要在末行模式进行
编辑模式不能够直接进入尾行模式,需要通过命令模式进行中转。
命令模式进入尾行模式:
① shift+; : 保存退出
② / 查找替换

保存/另存 :w 保存文件 退出
q 退出编辑器
:wq 保存并退出
:q! 退出不保存 强制退出
wq and x的区别
:wq 强制性写入文件并退出。即使文件没有被修改也强制写入,并更新文件的修改时间。:x 写入文件并退出。仅当文件被修改时才写入,并更新文件修改时间,否则不会更新文件修改时间。这两者一般情况下没什么不一样,但是在编程方面,对编辑源文件可能会产生重要影响。因为文件即使没有修改,”:wq”强制更新文件的修改时间,这样会让make编译整个项目时以为文件被修改过了,然后就得重新编译链接生成可执行文件。这可能会产生让人误解的后果,当然也产生了不必要的系统资源花销。

查找
① :/内容/
② /内容 查找内容(小写n 下一个/大写N上一个)
取消高亮
:nohl
:set nohls
替换
①:s/cont1/cont2/ 光标所在行的第一个cont1替换为cont2
②:s/cont1/cont2/g 光标所在行的全部cont1 替换为cont2
③:%s/cont1/cont2/g 文档中全部cont1替换为cont2

默认开启vim行号
:set nu //显示行号
:set nonu //去掉行号
如果想要永久设置用户的vim编辑器的行号,可以在用户的家目录中创建一个vim的配置文件
①在/root家目录创建.vimrc文件
vim打开文件 当打开文件会自动创建

编辑文件里的内容
set nu
开启行号
x 和 X
:x 保存并退出 可以代替wq
:X 加密文件
注意不要随意加密系统文件 ,可能会出现系统不能操作的文件
重做和撤销
①当文件进行修改之后,如果想撤销/重做,则可以在末行模式中输入:u,来撤销上一步的操作。(win下的ctrl+z)undo
②如果这个时候想取消撤销,可以在命令模式中按下组合键ctrl+r。(win下的ctrl+y)
如果想撤销多步,则可以在末行模式中输入:数字u。

用户 用户组的管理
RBACj基于角色的权限控制管理
角色就相当于用户组
用户和用户组管理,就是为了方便操作系统,进行权限的分配操作
用户管理 用户相关信息的记录文件 /etc/passwd
①打开并查看用户管理文件
vim /etc/passwd

第一列 天蓝色 用户名称
第二列 粉色密码的占位符
第三列 红色 用户id 用户组id
用户id 默认500 之前都是系统保留的 如果想自行设定也可以使用-u参数指定
第四列 蓝色 备注 -c 参数指定
第五列 绿色 用户的家目录地址
第六列 黄色 使用shell命令的方式 nologin 不允许登录 (常见于需要用户执行软件,但是不需要登录的情况)

增加用户
useradd 增加用户 默认会创建一个同名组
-g 组编号 -u 本身编号 -d 家目录 用户名称 //组别,编号 家目录都进行设置
①创建一个用户
shell>useradd itphp
②查看配值文件里的用户
shell>useradd -u666 -c itphp -g500 itphp
指定用户id,指定用户组id,添加用户备注

修改用户

shell> usermod 用户名称
-l 修改名称
usermod -l 新名 原名
shell> usermod -g 501 -c modify itphp

删除

userdel 用户名称
-r 同时删除家目录
shell> userdel itphp

如果删除用户及其用户组时,有其他用户在用户组下,就不会删除用户组,只删除用户

用户组管理
用户组管理文件 /etc/group
①使用vim编辑器打开/etc/group
shell>vim /etc/group
②查看内容及每个参数的意义


第一列 天蓝色 用户组名称
第二列 紫色 占位符
第三列 红色 组id 500 钱为系统保留id
需求:在公司团队中,有几下几个部门需要使用服务器操作系统。根据需求进行建立用户组,来区别不同用户。
server 后端 xiaoming xiaohei
client 前端 xiaohua xiaolv
app 手机端 tom jerry
设计实现:需要先把用户组创建出来

增加用户组
groupadd 添加用户组
-g 组 id
①建立三个用户组

shell > groupadd server
shell > groupadd client
shell > groupadd app -g 768

②查看组配置文件

③ 创建用户并给用户指定对应的分组
通过添加用户命令的方式,进行指定新用户的分组

shell > useradd xiaoming -g 502
xiaoming被添加到502的server组

修改
groupmod 用户组名称
-g 修改gid
-n 修改组名称
shell>groupmod server -g 520 -n Server
删除
groupdel 用户组名称
groupdel Server
如果用户组下面存在用户,用户组不能够删除
删除用户之后,再进行用户组的删除操作


设置用户密码及其用户切换

①给创建的新用户增加密码

在添加密码之后,用户可以正常登陆了。
用户之间的切换,可以使用su命令进行操作。
普通用户没有操作root家目录的权限
①通过ls -l 或者ll 查看文件夹或者文件的权限


权限一般分为三种
①读权限 read 4
②写权限 write 2
③执行权限 x 1
第1列 文档的类型 表示是文件还是文件夹 -代表文件 d代表文件夹
第2-4列 文件所有者的权限
第5-7列 文件所有者同组用户的权限
第8-10列 其他用户 既不是用户本身,有不同和文件的用户是同组

修改权限语法:

chmod 字符形式设置|数字形式设置
ugo方式设置
增加权限+
取消权限-
同时可以直接重新设置权限
user文件所有者 group文件所有者所在组 other 其他用户
给root目录,其他用户增加rx权限

shell > chmod o+rx /root


给root目录,所有用户增加写权限

shell > chmod ugo+w /root

数字形式设置
把对应的权限代表的数字进行相加,然后三位数字进行设置
第1位 文件所有者
第2位 文件所有者用户组
第3位 其他用户
r 4 w 2 x 1
问:777 664 674权限?
777 所有用户具有所有权限
664 文件所有者及其组用户具有读写权限,其他用户具有读权限
764 文件所有者具有所有权限,用户组具有读写权限,其他用户具有读权限
①给/root目录所有权限
shell > chmod 777 /root

②恢复原来root目录的原始权限
原来root目录是drwxr-x—
shell > chmod 750 /root

文件所属设置

chown 用户.用户组 文件路径chow名称
chown 用户名 文件
chown .组 文件
chown 用户.组 文件
①使用root用户身份在/根目录下建立itcast文件夹


文件所有者具有所有权限 组用户和其他用户具有读和执行权限
②切换到ithm5用户,进行在itcast目录里创建文件

没有权限进行操作
③通过root用户身份把/itcast文件夹的文件所属交付给ithm5


文件夹及其子文件夹和文件的权限或者所属关系都改变,需要在命令后加入-R 参数
语法:
chmod -R 权限数字 文件夹路径名称
chown -R 用户用户组 文件夹路径名称
五、系统常用命令 —-> 了解下
1 . grep
文本搜索命令,可以帮助用户快速查看文件内容中,是否存在查询的字符

搜索文本里是否存在某个字符

2

shell>du -h
查看文件所占空间大小
最小单位为4
3


shell >date & cal
查看系统的时间

4__

df -lh
查看系统的硬盘使用情况


5

free
free 空闲 内存使用显示


6
管道pipe
| 管道命令符 前边的结果,作为后面的参数

7
find
find 查询路径 【参数】 查找文件名称
-name 文件名称 通过文件名称找文件所在的路径
注意在搜索中,路径尽量使用较小范围的,否则会特别慢



ssh 协议
协议就是数据传输的规范和标准
http 80 https 加密(ssl)的http 443 mysql 3306
pop3(邮局协议版本3)110 smtp(简单邮件传输协议) 25
ssh协议 基于ssl加密的远程连接协议。 端口22
telnet 是之前用到的远程连接协议。
使用某种服务 需要协议和端口号 IP 启动一个服务
①查看服务状态
语法

service   服务名称   操作 [start|stop|status] 启动|关闭|状态
sshd  
shell>service   sshd  status 

查看ip地址连接ssh远程服务

ifconfig

ps 查看系统进程
ps -A|grep 查询的进程

利用ssh工具实现跨平台传输文件

语法格式(windows中文件传输到linux中)

pscp windows中的文件路径 用户名@主机地址:文件的保存路径

②打开cmd命令行并拖入软件
注意一定要使用root用户登录操作
cmd > H:\系统镜像\程序\PSCP.EXE E:\itcast\ithm5\linux\day2\软件\amp* root@192.168.127.126:/root/data

利用sftp工具实现文件的上传/下载

同类工具有filezilla winscp
sftp 基于ssh加密的文件传输协议 更加安全 端口22
ftp 文件传输协议 端口是21
使用支持sftp的工具进行软件的上传操作
安装的软件:filezilla
光盘挂载及其软件安装方式
光盘挂载
默认光盘挂载目录 /media
挂载windows系统下,如果放入光盘会自动分配一个盘符
linux 系统下,命令行模式下不会自动分配,需要手动进行挂载光盘[U盘、移动硬盘]到一个目录,类似于一个快捷方式,使能够获取到光盘的内容信息
虚拟机里的linux,想要使用centos光盘里的软件,需要挂载
操作步骤:
①将光盘放入光驱中
②查看是否自动挂载
图形界面下,会自动进行光盘的挂载,但是服务器是命令行模式的,它需要进行手动挂载
③查看光盘的挂载点及其光驱设备

shell > lsblk

④卸载光盘并进行手动挂载

umout /dev/sr0

创建/dvd目录

mkdir dvd

挂载到目录/dvd下

语法:mount 设备名称 挂载路径

shell > mount /dev/sr0 /dvd


软件安装方式介绍

①rpm 安装方式 二进制安装包 通过安装包进行软件安装
②yum安装 云安装方式 类似于软件管家
③源码编译方式 编程语言C++ 编写的软件

一 rpm方式

redhat系列 .rpm
debian ubuntu的软件安装包 .deb
macos .dmg
①查询软件
语法 :

rpm -qa[|grep] 需要查询的关键词

参数解释:
-q:表示query,查询
-a:表示全部,all
|:管道命令
grep:表示从结果中进行过滤
②卸载软件
语法:

rpm –e 需要卸载的软件名称(软件完整名称,即通过查询得到的名称) [–nodeps]

参数说明:
-e:表示卸载
–nodeps:表示忽略依赖关系

③安装软件
语法:

rpm -ivh 需要安装的软件完整名称

参数说明:
-i:表示安装,install
-v:表示显示进度条
-h:表示进度条以“#”显示
跳入安装包目录并查看要安装软件的安装包名称

二 yum方式

yum方式 直接从网络源下载,自动解决依赖问题
类似于在win下的360软件管家或者腾讯软件管家等,会自动帮助更新安装软件
同类类型软件:
ubuntu系统的apt-get
macos 系统的 howbrew ruby语言开发
一些情况下可能没有网络资源,需要把软件源修改到本地。

①配置yum软件源为本地
cd /etc/yum.repos.d
关闭网络源,配置光盘源
注意执行命令的路径
/etc/yum.repos.d
mv CentOS-Base.repo CentOS-Base.repo_bak
先备份 linux下先备份
cp CentOS-Media.repo CentOs-Media.repbak
然后在编辑
vim CentOS-Media.repo

②测试完成安装firefox的操作
语法: yum -y install 安装
remove 卸载
list 安装的软件列表

源码编译方式

c或者c++语言编写的,需要编译生成可执行的软件
gcc工具 是GNU组织的编译c语言的工具
源码编译安装的特点
①编译时间长
②可以针对软件进行定制修改 可以能够更好的发挥软件的性能
③最新版本的软件 rpm都是比较延后的 如果想使用最新版的软件 就需要编译安装
安装步骤:
①./configure 收集设置配置文件信息
./configure –help 可以查看配置参数
②make 编译生成软件
③make install 把生成的软件安装到指定目录
源码编译的软件,类似于绿色软件,不需要的时候,可以直接删除安装的软件目录,及其已经解压编译过的安装包目录即可。重新安装。

在linux中如何去解压压缩包

windows下压缩格式rar zip 7zip
tar 是linux下压缩包格式
tar也是一个压缩、解压缩命令
.gz tar zxvf filename
.bz tar jxvf filename
安装zlib压缩库

shell>#cd /root/data
shell>#tar -zxvf zlib-1.2.5.tar.gz
shell>#cd zlib-1.2.5
shell>#./configure //对当前的程序安装进行配置
shell>#make && make install //编译&&安装

安装apache
在安装Apache之前先卸载掉当前系统中已经默认安装的Apache:
注意el6,是字母l,不是数字1

rpm -qa|grep httpd
rpm -e httpd-2.2.15

命令

shell>#cd /root/data
shell>#tar -jxvf httpd-2.2.19.tar.bz2
shell>#cd httpd-2.2.19
shell>#./configure –prefix=/usr/local/http2 –enable-modules=all –enable-mods-shared=all –sysconfdir=/etc/httpd –enable-so
shell>#make && make install

–prefix:指定软件的安装目录,如果指定的目录存在,则自动创建;
–enable-modules:指定加载的模块;
–enable-mods-shared:表示模块以静态共享的方式进行安装
–sysconfdir:指定软件的配置文件的存放位置;

修改Apache配置文件(148行左右),去掉ServerName前的#注释:

shell>#vim +148 /etc/httpd/httpd.conf

Apache启动/停止/重启命令:

shell>#/usr/local/http2/bin/apachectl [start|stop|restart]

编写测试文件,测试apache的网站目录
默认apache编译安装的网站目录:/usr/local/http2/htdocs

shell > vim /usr/local/http2/htdocs/ithm5.html

inux可以通过ps命令查看进程信息,进程启动了,软件也在运行。
ps -A|grep 软件名称
关闭进程:kill 参数 进程pid号
-9 强制杀死
-11 进程正常使用进行操作不杀死,等空闲时杀死
批量通过进程名称杀死进程 killall httpd

TIP:卸载删除重新编译安装的软件
注意停止软件之后,再删除软件目录
问题:可能在安装好apache之后,通过ps进程命令查看,apache也是正常启动的,但是就是不能过访问,可以测试判断是否为防火墙问题,选择临时关闭或者在防火墙设置开启http协议。
解决:在防火墙设置通过http规则
①使用setup进行系统设置

安装libxml2

shell>#cd /root/data
shell>#tar -zxvf libxml2-2.7.2.tar.gz
shell>#cd libxml2-2.7.2
shell>#./configure –prefix=/usr/local/libxml2 –without-zlib
shell>#make && make install

–without-zlib:不需要zlib依赖

安装jpeg8

shell>#cd /root/data
shell>#tar -zxvf jpegsrc.v8b.tar.gz
shell>#cd jpeg-8b
shell>#./configure –prefix=/usr/local/jpeg –enable-shared –enable-static
shell>#make && make install

安装libpng

shell>#cd /root/data
shell>#tar -zxvf libpng-1.4.3.tar.gz
shell>#cd libpng-1.4.3
shell>#./configure
shell>#make && make install

安装freetype(字体库软件)

shell>#cd /root/data
shell>#tar -zxvf freetype-2.4.1.tar.gz
shell>#cd freetype-2.4.1
shell>#./configure –prefix=/usr/local/freetype
shell>#make && make install

安装GD库(处理图片的扩展)

shell>#cd /root/data
shell>#tar -zxvf gd-2.0.35.tar.gz
shell>#cd gd-2.0.35
shell>#./configure –prefix=/usr/local/gd –with-jpeg=/usr/local/jpeg/ –with-png –with-zlib –with-freetype=/usr/local/freetype
shell>#make && make install

–with-jpeg:说明需要jpeg扩展
–with-png:说明需要png扩展

安装openssl
Openssl是php的一个扩展,作用是支持加密(加密套件),用于https协议。

shell>#cd /root/data
shell>#tar -zxvf openssl-1.0.1t.tar.gz
shell>#cd ./openssl-1.0.1t
shell>#./config –prefix=/usr/local/openssl
shell>#make && make install

安装php
把php5.4安装包上传到之前的服务器安装包目录

shell>#cd /root/data
shell>#tar zxvf php-5.4.45.tar.gz
shell>#cd php-src-php-5.4.45/
此包为开发者包,没有configure,需要通过buildconf生成configure
shell>#./buildconf –force
shell>#./configure –prefix=/usr/local/php –with-apxs2=/usr/local/http2/bin/apxs –with-mysql=mysqlnd –with-pdo-mysql=mysqlnd –with-mysqli=mysqlnd –with-freetype-dir=/usr/local/freetype –with-gd=/usr/local/gd –with-zlib –with-libxml-dir=/usr/local/libxml2 –with-jpeg-dir=/usr/local/jpeg –with-png-dir –enable-mbstring=all –enable-mbregex –enable-shared –with-openssl-dir=/usr/local/openssl –with-openssl –without-pear
shell>#make && make install

–without-pear pear包管理工具 默认会联网下载,如果没有网络的话,就可能不能继续执行,加入此参数,不进行此pear包的安装

通过网络查询,找到解决方案,修改gb类库文件解决此问题
shell > vim /usr/local/gd/include/gd_io.h

继续make && make install,等待编译之后的显示效果

配置php使用
复制php配置文件到指定目录:
shell>#cp php.ini-development /usr/local/php/lib/php.ini

修改apache配置文件:

添加apache的mime类型(355行左右):

shell>#vim +355 /etc/httpd/httpd.conf

在mime类型模块中添加:

AddType application/x-httpd-php .php //让Apache支持解析php文件

在dir_modul模块添加默认文档声明(218行左右):

DirectoryIndex index.php index.html

重启apache:
shell>#/usr/local/http2/bin/apachectl restart

需要关闭apache再启动apache生效,因为有时候重启可能会不起作用


vim +/date php.ini


安装cmake
Cmake是一款新的c语言编译器,类似于前面提及gcc、gcc-c++,mysql从5.5之后的版本不再使用别的编译器,只能使用cmake进行编译:

shell>#cd /root/data
shell>#tar -zxvf cmake-3.6.0-rc1.tar.gz
shell>#cd ./cmake-3.6.0-rc1
shell>#./bootstrap //此处使用的是bootstrap,不是configure
shell>#gmake
shell>#gmake install
可以直接执行cmake查看是否安装成功:
cmake

安装ncurses-devel
这个是mysql的依赖文件,如果不安装会报一个错误

这个是mysql的依赖文件,如果不安装会报一个错误
yum -y install ncurses-devel

安装mysql

shell>#cd /root/data
shell>#tar -zxvf mysql-5.5.17.tar.gz
shell>#cd mysql-5.5.17
shell>#cmake \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_DATADIR=/usr/local/mysql/data \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci
shell>#make && make install

第一个参数 mysql安装到目录
第二个参数 mysql存储数据文件的位置
第三个参数 默认字符串编码
第四个参数 连接时的字符编码排序方式

配置mysql相关
生成mysql配置文件(下述命令必须在mysql的解压目录中执行):
shell>#cp support-files/my-mediumf /etc/myf
如果提示是否覆盖,输入y,然后按下回车

>

Mysql用户组及权限设置:
shell>#useradd mysql
shell>#chown -R mysql.mysql /usr/local/mysql (设置所有者)

在linux下装好mysql之后本身没有一些默认的数据,如test数据库。所以需要进行数据库的初始化操作。
数据库初始化:
shell>#/usr/local/mysql/scripts/mysql_install_db \
–user=mysql \
–basedir=/usr/local/mysql \
–datadir=/usr/local/mysql/data &

&符号,表示所在的命令后台执行。

卡屏时,按下回车。
把mysql安装文件(除data)的所有者都改为root,避免数据库恢复为出厂设置:
shell>#chown -R root /usr/local/mysql #将mysql安装目录递归全部改成root所有
shell>#chown -R mysql /usr/local/mysql/data #除了mysql/data目录之外

后台运行mysql服务,命令完成按下回车:

shell>#/usr/local/mysql/bin/mysqld_safe –user=mysql &


查看mysql是否启动:
shell>#ps -A | grep mysql
-A:all
grep表示过滤

本文标签: 事儿 Linux