目录
一、基础知识
1.1 Linux 系统的文件
/bin 二进制文件,系统常规命令
/boot 系统启动分区,系统启动时读取的文件
/dev 设备文件
/etc 大多数配置文件
/home 普通用户的家目录
/lib 32位函数库
/lib64 64位库
/media 手动临时挂载点
/mnt 手动临时挂载点
/opt 第三方软件安装位置
/proc 进程信息及硬件信息
/root 临时设备的默认挂载点
/sbin 系统管理命令
/srv 数据
/var 数据
/sys 内核相关信息
/tmp 临时文件
/usr 用户相关设定
二、基础操作
2.1 重启系统
立刻关机
shutdown -h now
poweroff
两分钟后关机
shutdown -h 2
2.2 关闭系统
立刻重启
shutdown -r now
reboot
两分钟后重启
shutdown -r 2
切换用户(su)
su yao //切换为用户"yao",输入后回车需要输入该用户的密码
exit //退出当前用户
三、目录/文件操作
3.1 切换目录(cd)
cd / //切换到根目录
cd /bin //切换到根目录下的bin目录
cd ../ //切换到上一级目录 或者使用命令:cd ..
cd ~ //切换到home目录
cd - //切换到上次访问的目录
cd xx(文件夹名) //切换到本目录下的名为xx的文件目录,如果目录不存在报错
cd /xxx/xx/x //可以输入完整的路径,直接切换到目标目录,输入过程中可以使用tab键快速补全
3.2 查看目录(ls)
ls //查看当前目录下的所有目录和文件
ls -a //查看当前目录下的所有目录和文件(包括隐藏的文件)
ls -l //列表查看当前目录下的所有目录和文件(列表查看,显示更多信息),与命令"ll"效果一样
ls /bin //查看指定目录下的所有目录和文件
3.3 创建目录(mkdir)
mkdir tools //在当前目录下创建一个名为tools的目录
mkdir /bin/tools //在指定目录下创建一个名为tools的目录
3.4 删除/文件(rm)
rm 文件名 //删除当前目录下的文件
rm -f 文件名 //删除当前目录的的文件(不询问)
rm -r 文件夹名 //递归删除当前目录下此名的目录
rm -rf 文件夹名 //递归删除当前目录下此名的目录(不询问)
rm -rf * //将当前目录下的所有目录和文件全部删除
rm -rf /* //将根目录下的所有文件全部删除【慎用!相当于格式化系统】
3.5 修改(重命名)目录/文件(mv)
mv 当前目录名 新目录名 //修改目录名,同样适用与文件操作
mv /usr/tmp/tool /opt //将/usr/tmp目录下的tool目录剪切到 /opt目录下面
mv -r /usr/tmp/tool /opt //递归剪切目录中所有文件和文件夹
3.6 拷贝目录/文件(cp)
cp /usr/tmp/tool /opt //将/usr/tmp目录下的tool目录复制到 /opt目录下面
cp -r /usr/tmp/tool /opt //递归剪复制目录中所有文件和文件夹
3.7 搜索/文件(find)
find /bin -name 'a*' //查找/bin目录下的所有以a开头的文件或者目录
3.8 查看当前目录(pwd)
pwd //显示当前位置路径
四、文件操作
4.1 新增文件(touch)
touch a.txt //在当前目录下创建名为a的txt文件(文件不存在),如果文件存在,将文件时间属性修改为当前系统时间
4.2 编辑文件(vi、vim)
vi 文件名 //打开需要编辑的文件
--进入后,操作界面有三种模式:命令模式(command mode)、插入模式(Insert mode)和底行模式(last line mode)
命令模式
-刚进入文件就是命令模式,通过方向键控制光标位置,
-使用命令"dd"删除当前整行
-使用命令"/字段"进行查找
-按"i"在光标所在字符前开始插入
-按"a"在光标所在字符后开始插入
-按"o"在光标所在行的下面另起一新行插入
-按":"进入底行模式
插入模式
-此时可以对文件内容进行编辑,左下角会显示 "-- 插入 --""
-按"ESC"进入底行模式
底行模式
-退出编辑: :q
-强制退出: :q!
-保存并退出: :wq
## 操作步骤示例 ##
1.保存文件:按"ESC" -> 输入":" -> 输入"wq",回车 //保存并退出编辑
2.取消操作:按"ESC" -> 输入":" -> 输入"q!",回车 //撤销本次修改并退出编辑
## 补充 ##
vim +10 filename.txt //打开文件并跳到第10行
vim -R /etc/passwd //以只读模式打开文件
4.3 查看文件内容
4.3.1 cat
cat(英文全拼:concatenate)命令用于连接文件并打印到标准输出设备上。
使用权限:
所有使用者
语法格式:
cat [-AbeEnstTuv] [--help] [--version] fileName
- 参数说明:
- -n 或 --number:由 1 开始对所有输出的行数编号。
- -b 或 --number-nonblank:和 -n 相似,只不过对于空白行不编号。
- -s 或 --squeeze-blank:当遇到有连续两行以上的空白行,就代换为一行的空白行。
- -v 或 --show-nonprinting:使用 ^ 和 M- 符号,除了 LFD 和 TAB 之外。
- -E 或 --show-ends : 在每行结束处显示 $。
- -T 或 --show-tabs: 将 TAB 字符显示为 ^I。
- -A, --show-all:等价于 -vET。
- -e:等价于"-vE"选项;
- -t:等价于"-vT"选项;
cat a.txt //查看文件最后一屏内容
cat -n textfile1 > textfile2 //把 textfile1 的文档内容加上行号后输入 textfile2 这个文档里:
4.3.2 less
less 与 more 类似,less 可以随意浏览文件,支持翻页和搜索,支持向上翻页和向下翻页。
语法
less [参数] 文件
- 参数说明:
- -b <缓冲区大小> 设置缓冲区的大小
- -e 当文件显示结束后,自动离开
- -f 强迫打开特殊文件,例如外围设备代号、目录和二进制文件
- -g 只标志最后搜索的关键词
- -i 忽略搜索时的大小写
- -m 显示类似 more 命令的百分比
- -N 显示每行的行号
- -o <文件名> 将 less 输出的内容在指定文件中保存起来
- -Q 不使用警告音
- -s 显示连续空行为一行
- -S 行过长时间将超出部分舍弃
- -x <数字> 将"tab"键显示为规定的数字空格
- /字符串:向下搜索"字符串"的功能
- ?字符串:向上搜索"字符串"的功能
- n:重复前一个搜索(与 / 或 ? 有关)
- N:反向重复前一个搜索(与 / 或 ? 有关)
- b 向上翻一页
- d 向后翻半页
- h 显示帮助界面
- Q 退出 less 命令
- u 向前滚动半页
- y 向前滚动一行
- 空格键 滚动一页
- 回车键 滚动一行
- [pagedown]: 向下翻动一页
- [pageup]: 向上翻动一页
less a.txt //PgUp 向上翻页,PgDn 向下翻页,"q"退出查看
ps -ef |less //ps 查看进程信息并通过 less 分页显示
4.3.3 more
Linux more 命令类似 cat ,不过会以一页一页的形式显示,更方便使用者逐页阅读,而最基本的指令就是按空白键(space)就往下一页显示,按 b 键就会往回(back)一页显示,而且还有搜寻字串的功能(与 vi 相似),使用中的说明文件,请按 h 。
语法
more [-dlfpcsu] [-num] [+/pattern] [+linenum] [fileNames..]
- 参数:
- -num 一次显示的行数
- -d 提示使用者,在画面下方显示 [Press space to continue, 'q' to quit.] ,如果使用者按错键,则会显示 [Press 'h' for instructions.] 而不是 '哔' 声
- -l 取消遇见特殊字元 ^L(送纸字元)时会暂停的功能
- -f 计算行数时,以实际上的行数,而非自动换行过后的行数(有些单行字数太长的会被扩展为两行或两行以上)
- -p 不以卷动的方式显示每一页,而是先清除萤幕后再显示内容
- -c 跟 -p 相似,不同的是先显示内容再清除其他旧资料
- -s 当遇到有连续两行以上的空白行,就代换为一行的空白行
- -u 不显示下引号 (根据环境变数 TERM 指定的 terminal 而有所不同)
- +/pattern 在每个文档显示前搜寻该字串(pattern),然后从该字串之后开始显示
- +num 从第 num 行开始显示
- fileNames 欲显示内容的文档,可为复数个数
more a.txt //显示百分比,回车查看下一行,空格查看下一页,"q"退出查看
4.3.4 head
head 命令可用于查看文件的开头部分的内容,有一个常用的参数 -n 用于显示行数,默认为 10,即显示 10 行的内容。
命令格式:
head [参数] [文件]
- 参数:
- -q 隐藏文件名
- -v 显示文件名
- -c<数目> 显示的字节数。
- -n<行数> 显示的行数。
4.3.5 tail
tail 命令可用于查看文件的内容,有一个常用的参数 -f 常用于查阅正在改变的日志文件。
tail -f filename 会把 filename 文件里的最尾部的内容显示在屏幕上,并且不断刷新,只要 filename 更新就可以看到最新的文件内容。
命令格式:
tail [参数] [文件]
- 参数:
- -f 循环读取
- -q 不显示处理信息
- -v 显示详细的处理信息
- -c<数目> 显示的字节数
- -n<行数> 显示文件的尾部 n 行内容
- --pid=PID 与-f合用,表示在进程ID,PID死掉之后结束
- -q, --quiet, --silent 从不输出给出文件名的首部
- -s, --sleep-interval=S 与-f合用,表示在每次反复的间隔休眠S秒
tail -100 a.txt //查看文件的后100行,"Ctrl+C"退出查看
4.3.6 stat(查看文件详细信息,后要加查看的文件名)
Linux stat 命令用于显示 inode 内容。
stat 以文字的格式来显示 inode 的内容。
语法
stat [文件或目录]
stat testfile //查看 testfile 文件的inode内容内容,可以用以下命令:
4.6 ln(软连接)
Linux ln(英文全拼:link files)命令是一个非常重要命令,它的功能是为某一个文件在另外一个位置建立一个同步的链接。
当我们需要在不同的目录,用到相同的文件时,我们不需要在每一个需要的目录下都放一个必须相同的文件,我们只要在某个固定的目录,放上该文件,然后在 其它的目录下用ln命令链接(link)它就可以,不必重复的占用磁盘空间。
语法
ln [参数][源文件或目录][目标文件或目录]
其中参数的格式为
[-bdfinsvF] [-S backup-suffix] [-V {numbered,existing,simple}]
[--help] [--version] [--]
- 命令功能 :
- Linux文件系统中,有所谓的链接(link),我们可以将其视为档案的别名,而链接又可分为两种 : 硬链接(hard link)与软链接(symbolic link),硬链接的意思是一个档案可以有多个名称,而软链接的方式则是产生一个特殊的档案,该档案的内容是指向另一个档案的位置。硬链接是存在同一个文件系统中,而软链接却可以跨越不同的文件系统。
- 不论是硬链接或软链接都不会将原本的档案复制一份,只会占用非常少量的磁碟空间。
- 软链接:
- 软链接,以路径的形式存在。类似于Windows操作系统中的快捷方式
- 软链接可以 跨文件系统 ,硬链接不可以
- 软链接可以对一个不存在的文件名进行链接
- 软链接可以对目录进行链接
- 硬链接:
- 硬链接,以文件副本的形式存在。但不占用实际空间。
- 不允许给目录创建硬链接
- 硬链接只有在同一个文件系统中才能创建
- 命令参数
- 必要参数:
- --backup[=CONTROL] 备份已存在的目标文件
- -b 类似 --backup ,但不接受参数
- -d 允许超级用户制作目录的硬链接
- -f 强制执行
- -i 交互模式,文件存在则提示用户是否覆盖
- -n 把符号链接视为一般目录
- -s 软链接(符号链接)
- -v 显示详细的处理过程
- 选择参数:
- -S "-S<字尾备份字符串> "或 "--suffix=<字尾备份字符串>"
- -V "-V<备份方式>"或"--version-control=<备份方式>"
- --help 显示帮助信息
- --version 显示版本信息
- 必要参数:
五、文件权限
5.1 权限说明
文件权限简介:
'r' 代表可读(4)
'w' 代表可写(2)
'x' 代表执行权限(1)
括号内代表"8421法"
##文件权限信息示例:-rwxrw-r--
-第一位:'-'就代表是文件,'d'代表是文件夹
-第一组三位:拥有者的权限
-第二组三位:拥有者所在的组,组员的权限
-第三组三位:代表的是其他用户的权限
drwxrwxrwx 2 root root 4096 11月816:38 excel
drwxr-xr-- 2 777 root 4096 11月816:47 zip
共显示了七列信息,从左至右依次为:权限、文件数、归属用户、归属群组、文件大小、创建日期、文件名称
d :第一位表示文件类型
d 文件夹
- 普通文件
l 链接
b 块设备文件
p 管道文件
c 字符设备文件
s 套接口文件
rwx :第2-4位表示这个文件的属主拥有的权限。r是读、w是写、x是执行
r-x :第5-7位表示和这个文件属主所在同一个组的用户所具有的权限
r-x :第8-10位表示其他用户所具有的权限
从左至右,1-3位数字代表文件所有者的权限,4-6位数字代表同组用户的权限,7-9数字代表其他用户的权限
- 一共有10位数,其中:
- 最前面那个 - 代表的是类型
- 中间那三个 rw- 代表的是所有者(user)
- 然后那三个 rw- 代表的是组群(group)
常用的linux文件权限:
444 r--r--r--
600 drw-------
644 drw-r--r--
666 drw-rw-rw-
700 drwx------
744 drwxr--r--
755 drwxr-xr-x
777 drwxrwxrwx
5.2 文件权限
chmod(控制用户对文件的权限的命令)
Linux chmod(英文全拼:change mode)命令是控制用户对文件的权限的命令
Linux/Unix 的文件调用权限分为三级 : 文件所有者(Owner)、用户组(Group)、其它用户(Other Users)。
语法
chmod [-cfvR] [--help] [--version] mode file...
参数说明
mode : 权限设定字串,格式如下 :
[ugoa...][[+-=][rwxX]...][,...]
其中:
- u 表示该文件的拥有者,g 表示与该文件的拥有者属于同一个群体(group)者,o 表示其他以外的人,a 表示这三者皆是。
- + 表示增加权限、- 表示取消权限、= 表示唯一设定权限。
- r 表示可读取,w 表示可写入,x 表示可执行,X 表示只有当该文件是个子目录或者该文件已经被设定过为可执行。
其他参数说明:
- -c : 若该文件权限确实已经更改,才显示其更改动作
- -f : 若该文件权限无法被更改也不要显示错误讯息
- -v : 显示权限变更的详细资料
- -R : 对目前目录下的所有文件与子目录进行相同的权限变更(即以递归的方式逐个变更)
- --help : 显示辅助说明
- --version : 显示版本
符号模式
使用符号模式可以设置多个项目:who(用户类型),operator(操作符)和 permission(权限),每个项目的设置可以用逗号隔开。 命令 chmod 将修改 who 指定的用户类型对文件的访问权限,用户类型由一个或者多个字母在 who 的位置来说明,如 who 的符号模式表所示:
who | 用户类型 | 说明 |
---|---|---|
u |
user | 文件所有者 |
g |
group | 文件所有者所在组 |
o |
others | 所有其他用户 |
a |
all | 所有用户, 相当于 ugo |
operator 的符号模式表:
Operator | 说明 |
---|---|
+ |
为指定的用户类型增加权限 |
- |
去除指定用户类型的权限 |
= |
设置指定用户权限的设置,即将用户类型的所有权限重新设置 |
permission 的符号模式表:
模式 | 名字 | 说明 |
---|---|---|
r |
读 | 设置为可读权限 |
w |
写 | 设置为可写权限 |
x |
执行权限 | 设置为可执行权限 |
X |
特殊执行权限 | 只有当文件为目录文件,或者其他类型的用户有可执行权限时,才将文件权限设置可执行 |
s |
setuid/gid | 当文件被执行时,根据who参数指定的用户类型设置文件的setuid或者setgid权限 |
t |
粘贴位 | 设置粘贴位,只有超级用户可以设置该位,只有文件所有者u可以使用该位 |
八进制语法
chmod命令可以使用八进制数来指定权限。文件或目录的权限位是由9个权限位来控制,每三位为一组,它们分别是文件所有者(User)的读、写、执行,用户组(Group)的读、写、执行以及其它用户(Other)的读、写、执行。历史上,文件权限被放在一个比特掩码中,掩码中指定的比特位设为1,用来说明一个类具有相应的优先级。
# | 权限 | rwx | 二进制 |
---|---|---|---|
7 | 读 + 写 + 执行 | rwx | 111 |
6 | 读 + 写 | rw- | 110 |
5 | 读 + 执行 | r-x | 101 |
4 | 只读 | r-- | 100 |
3 | 写 + 执行 | -wx | 011 |
2 | 只写 | -w- | 010 |
1 | 只执行 | --x | 001 |
0 | 无 | --- | 000 |
例如, 765 将这样解释:
- 所有者的权限用数字表达:属主的那三个权限位的数字加起来的总和。如 rwx ,也就是 4+2+1 ,应该是 7。
- 用户组的权限用数字表达:属组的那个权限位数字的相加的总和。如 rw- ,也就是 4+2+0 ,应该是 6。
- 其它用户的权限数字表达:其它用户权限位的数字相加的总和。如 r-x ,也就是 4+0+1 ,应该是 5。
六、打包与解压
6.1 说明
.zip、.rar //windows系统中压缩文件的扩展名
.tar //Linux中打包文件的扩展名
.gz //Linux中压缩文件的扩展名
.tar.gz //Linux中打包并压缩文件的扩展名
6.2 打包文件
tar -zcvf 打包压缩后的文件名 要打包的文件
参数说明:
z:调用gzip压缩命令进行压缩;
c:打包文件;
v:显示运行过程;
f:指定文件名;
示例:
tar -zcvf a.tar file1 file2,... //多个文件压缩打包
6.3 解压文件
tar -zxvf a.tar //解包至当前目录
tar -zxvf a.tar -C /usr------ //指定解压的位置
unzip test.zip //解压*.zip文件
unzip -l test.zip //查看*.zip文件的内容
七、其他常用命令
7.1 find(查询目标文件)
Linux find 命令用于在指定目录下查找文件和目录。
它可以使用不同的选项来过滤和限制查找的结果。
语法
find [path] [expression]
- 参数说明 :
- path 是要查找的目录路径,可以是一个目录或文件名,也可以是多个路径,多个路径之间用空格分隔,如果未指定路径,则默认为当前目录。
- expression 是可选参数,用于指定查找的条件,可以是文件名、文件类型、文件大小等等。
- expression 中可使用的选项有二三十个之多,以下列出最常用的部份:
-name pattern
:按文件名查找,支持使用通配符*
和?
。-type type
:按文件类型查找,可以是f
(普通文件)、d
(目录)、l
(符号链接)等。-size [+-]size[cwbkMG]
:按文件大小查找,支持使用+
或-
表示大于或小于指定大小,单位可以是c
(字节)、w
(字数)、b
(块数)、k
(KB)、M
(MB)或G
(GB)。-mtime days
:按修改时间查找,支持使用+
或-
表示在指定天数前或后,days 是一个整数表示天数。-user username
:按文件所有者查找。
-group groupname
:按文件所属组查找。
- find 命令中用于时间的参数如下:
-amin n
:查找在 n 分钟内被访问过的文件。-atime n
:查找在 n*24 小时内被访问过的文件。-cmin n
:查找在 n 分钟内状态发生变化的文件(例如权限)。-ctime n
:查找在 n*24 小时内状态发生变化的文件(例如权限)。-mmin n
:查找在 n 分钟内被修改过的文件。-mtime n
:查找在 n*24 小时内被修改过的文件。- 在这些参数中,n 可以是一个正数、负数或零。正数表示在指定的时间内修改或访问过的文件,负数表示在指定的时间之前修改或访问过的文件,零表示在当前时间点上修改或访问过的文件。
- 例如:-mtime 0 表示查找今天修改过的文件,-mtime -7 表示查找一周以前修改过的文件。
- 关于时间 n 参数的说明:
- +n:查找比 n 天前更早的文件或目录。
- -n:查找在 n 天内更改过属性的文件或目录。
- n:查找在 n 天前(指定那一天)更改过属性的文件或目录。
find . -name "*.c" //将目前目录及其子目录下所有延伸档名是 c 的文件列出来
find . -type f //将目前目录其其下子目录中所有一般文件列出
find . -ctime -20 //将目前目录及其子目录下所有最近 20 天内更新过的文件列出
find /var/log -type f -mtime +7 -ok rm {} \; //查找/var/log目录中更改时间在7日以前的普通文件,并在删除之前询问它们
find . -type f -perm 644 -exec ls -l {} \; //查找前目录中文件属主具有读、写权限,并且文件所属组的用户和其他用户具有读权限的文件
find / -type f -size 0 -exec ls -l {} \; //为了查找系统中所有文件长度为0的普通文件,并列出它们的完整路径
7.2 whereis(查询目标文件)
whereis ls //将和ls文件相关的文件都查找出来
7.3 which(环境变量$PATH设置的目录里查找符合条件的文件)
说明:which指令会在环境变量$PATH设置的目录里查找符合条件的文件。
which bash //查看指令"bash"的绝对路径
7.4 sudo(系统管理者的身份执行指令)
说明:sudo命令以系统管理者的身份执行指令,也就是说,经由 sudo 所执行的指令就好像是 root 亲自执行。需要输入自己账户密码。
使用权限:在 /etc/sudoers 中有出现的使用者
sudo -l //列出目前的权限
$ sudo -u yao vi ~www/index.html //以 yao 用户身份编辑 home 目录下www目录中的 index.html 文件
7.5 grep(查找文件里内容)
Linux grep (global regular expression) 命令用于查找文件里符合条件的字符串或正则表达式。
语法:
grep [options] pattern [files]
grep [-abcEFGhHilLnqrsvVwxy][-A<显示行数>][-B<显示列数>][-C<显示列数>][-d<进行动作>][-e<范本样式>][-f<范本文件>][--help][范本样式][文件或目录...]
- pattern - 表示要查找的字符串或正则表达式。
- files - 表示要查找的文件名,可以同时查找多个文件,如果省略 files 参数,则默认从标准输入中读取数据。
- 常用选项:
-i
:忽略大小写进行匹配。-v
:反向查找,只打印不匹配的行。-n
:显示匹配行的行号。-r
:递归查找子目录中的文件。-l
:只打印匹配的文件名。-c
:只打印匹配的行数。
grep hello file.txt //在文件 file.txt 中查找字符串 "hello",并打印匹配的行
grep -i "the" demo_file //在文件中查找字符串the(不区分大小写)
grep -A 3 -i "example" demo_text //输出成功匹配的行,以及该行之后的三行
grep -r "ramesh" * //在一个文件夹中递归查询包含指定字符串的文件
7.6 service
说明:service命令用于运行System V init脚本,这些脚本一般位于/etc/init.d文件下,这个命令可以直接运行这个文件夹里面的脚本,而不用加上路径
service ssh status //查看服务状态
service --status-all //查看所有服务状态
service ssh restart //重启服务
7.7 free(显示系统当前内存的使用情况)
Linux free命令用于显示内存状态。
free指令会显示内存的使用情况,包括实体内存,虚拟的交换文件内存,共享内存区段,以及系统核心使用的缓冲区等。
语法
free [-bkmotV][-s <间隔秒数>]
参数说明:
- -b 以Byte为单位显示内存使用情况。
- -k 以KB为单位显示内存使用情况。
- -m 以MB为单位显示内存使用情况。
- -h 以合适的单位显示内存使用情况,最大为三位数,自动计算对应的单位值。单位有:
B = bytes
K = kilos
M = megas
G = gigas
T = teras - -o 不显示缓冲区调节列。
- -s<间隔秒数> 持续观察内存使用状况。
- -t 显示内存总和列。
- -V 显示版本信息。
free -g //以G为单位输出内存的使用量,-g为GB,-m为MB,-k为KB,-b为字节
free -t //查看所有内存的汇总
7.8 top(实时系统监控工具)
Linux top 是一个在 Linux 和其他类 Unix 系统上常用的实时系统监控工具。它提供了一个动态的、交互式的实时视图,显示系统的整体性能信息以及正在运行的进程的相关信息。
语法
top [-] [d delay] [q] [c] [S] [s] [i] [n] [b]
参数说明:
-d <秒数>
:指定 top 命令的刷新时间间隔,单位为秒。-n <次数>
:指定 top 命令运行的次数后自动退出。-p <进程ID>
:仅显示指定进程ID的信息。-u <用户名>
:仅显示指定用户名的进程信息。-H
:在进程信息中显示线程详细信息。-i
:不显示闲置(idle)或无用的进程。-b
:以批处理(batch)模式运行,直接将结果输出到文件。-c
:显示完整的命令行而不截断。-S
:累计显示进程的 CPU 使用时间。
top //显示当前系统中占用资源最多的一些进程, shift+m 按照内存大小查看
7.10 mount(挂载Linux系统外的文件)
它用于挂载Linux系统外的文件。
语法
mount [-hV]
mount -a [-fFnrsvw] [-t vfstype]
mount [-fnrsvw] [-o options [,...]] device | dir
mount [-fnrsvw] [-t vfstype] [-o options] device dir
参数说明:
- -V:显示程序版本
- -h:显示辅助讯息
- -v:显示较讯息,通常和 -f 用来除错。
- -a:将 /etc/fstab 中定义的所有档案系统挂上。
- -F:这个命令通常和 -a 一起使用,它会为每一个 mount 的动作产生一个行程负责执行。在系统需要挂上大量 NFS 档案系统时可以加快挂上的动作。
- -f:通常用在除错的用途。它会使 mount 并不执行实际挂上的动作,而是模拟整个挂上的过程。通常会和 -v 一起使用。
- -n:一般而言,mount 在挂上后会在 /etc/mtab 中写入一笔资料。但在系统中没有可写入档案系统存在的情况下可以用这个选项取消这个动作。
- -s-r:等于 -o ro
- -w:等于 -o rw
- -L:将含有特定标签的硬盘分割挂上。
- -U:将档案分割序号为 的档案系统挂下。-L 和 -U 必须在/proc/partition 这种档案存在时才有意义。
- -t:指定档案系统的型态,通常不必指定。mount 会自动选择正确的型态。
- -o async:打开非同步模式,所有的档案读写动作都会用非同步模式执行。
- -o sync:在同步模式下执行。
- -o atime、-o noatime:当 atime 打开时,系统会在每次读取档案时更新档案的『上一次调用时间』。当我们使用 flash 档案系统时可能会选项把这个选项关闭以减少写入的次数。
- -o auto、-o noauto:打开/关闭自动挂上模式。
- -o defaults:使用预设的选项 rw, suid, dev, exec, auto, nouser, and async.
- -o dev、-o nodev-o exec、-o noexec允许执行档被执行。
- -o suid、-o nosuid:
- 允许执行档在 root 权限下执行。
- -o user、-o nouser:使用者可以执行 mount/umount 的动作。
- -o remount:将一个已经挂下的档案系统重新用不同的方式挂上。例如原先是唯读的系统,现在用可读写的模式重新挂上。
- -o ro:用唯读模式挂上。
- -o rw:用可读写模式挂上。
- -o loop=:使用 loop 模式用来将一个档案当成硬盘分割挂上系统。
mount /dev/sdb1 /u01 //挂载一个文件系统,需要先创建一个目录,然后将这个文件系统挂载到这个目录上
dev/sdb1 /u01 ext2 defaults 0 2 //添加到fstab中进行自动挂载,这样任何时候系统重启的时候,文件系统都会被加载
Linux uname(英文全拼:unix name)命令用于显示操作系统信息,例如内核版本、主机名、处理器类型等。。
7.11 uname
uname 可显示电脑以及操作系统的相关信息。
说明:uname可以显示一些重要的系统信息,例如内核名称、主机名、内核版本号、处理器类型之类的信息
语法
uname [-amnrsv][--help][--version]
参数说明:
- -a 或--all 显示全部的信息,包括内核名称、主机名、操作系统版本、处理器类型和硬件架构等。。
- -m 或--machine 显示处理器类型。
- -n 或--nodename 显示主机名。
- -r 或--release 显示内核版本号。
- -s 或--sysname 显示操作系统名称。
- -v 显示操作系统的版本。
- --help 显示帮助。
- --version 显示版本信息。
- -p 显示处理器类型(与 -m 选项相同)。
uname -a
7.12 yum
- 常用命令
- 列出所有可更新的软件清单命令:yum check-update
- 更新所有软件命令:yum update
- 仅安装指定的软件命令:yum install <package_name>
- 仅更新指定的软件命令:yum update <package_name>
- 列出所有可安裝的软件清单命令:yum list
- 删除软件包命令:yum remove <package_name>
- 查找软件包命令:yum search <keyword>
- 清除缓存命令:
- yum clean packages: 清除缓存目录下的软件包
- yum clean headers: 清除缓存目录下的 headers
- yum clean oldheaders: 清除缓存目录下旧的 headers
- yum clean, yum clean all (= yum clean packages; yum clean oldheaders) :清除缓存目录下的软件包及旧的 headers
7.13 rpm
语法
rpm [-acdhilqRsv][-b<完成阶段><套间档>+][-e<套件挡>][-f<文件>+][-i<套件档>][-p<套件档>+][-U<套件档>][-vv][--addsign<套件档>+][--allfiles][--allmatches][--badreloc][--buildroot<根目录>][--changelog][--checksig<套件档>+][--clean][--dbpath<数据库目录>][--dump][--excludedocs][--excludepath<排除目录>][--force][--ftpproxy<主机名称或IP地址>][--ftpport<通信端口>][--help][--httpproxy<主机名称或IP地址>][--httpport<通信端口>][--ignorearch][--ignoreos][--ignoresize][--includedocs][--initdb][justdb][--nobulid][--nodeps][--nofiles][--nogpg][--nomd5][--nopgp][--noorder][--noscripts][--notriggers][--oldpackage][--percent][--pipe<执行指令>][--prefix<目的目录>][--provides][--queryformat<档头格式>][--querytags][--rcfile<配置档>][--rebulid<套件档>][--rebuliddb][--recompile<套件档>][--relocate<原目录>=<新目录>][--replacefiles][--replacepkgs][--requires][--resign<套件档>+][--rmsource][--rmsource<文件>][--root<根目录>][--scripts][--setperms][--setugids][--short-circuit][--sign][--target=<安装平台>+][--test][--timecheck<检查秒数>][--triggeredby<套件档>][--triggers][--verify][--version][--whatprovides<功能特性>][--whatrequires<功能特性>]
- 参数说明
- -a 查询所有套件。
- -b<完成阶段><套件档>+或-t <完成阶段><套件档>+ 设置包装套件的完成阶段,并指定套件档的文件名称。
- -c 只列出组态配置文件,本参数需配合"-l"参数使用。
- -d 只列出文本文件,本参数需配合"-l"参数使用。
- -e<套件档>或--erase<套件档> 删除指定的套件。
- -f<文件>+ 查询拥有指定文件的套件。
- -h或--hash 套件安装时列出标记。
- -i 显示套件的相关信息。
- -i<套件档>或--install<套件档> 安装指定的套件档。
- -l 显示套件的文件列表。
- -p<套件档>+ 查询指定的RPM套件档。
- -q 使用询问模式,当遇到任何问题时,rpm指令会先询问用户。
- -R 显示套件的关联性信息。
- -s 显示文件状态,本参数需配合"-l"参数使用。
- -U<套件档>或--upgrade<套件档> 升级指定的套件档。
- -v 显示指令执行过程。
- -vv 详细显示指令执行过程,便于排错。
- -addsign<套件档>+ 在指定的套件里加上新的签名认证。
- --allfiles 安装所有文件。
- --allmatches 删除符合指定的套件所包含的文件。
- --badreloc 发生错误时,重新配置文件。
- --buildroot<根目录> 设置产生套件时,欲当作根目录的目录。
- --changelog 显示套件的更改记录。
- --checksig<套件档>+ 检验该套件的签名认证。
- --clean 完成套件的包装后,删除包装过程中所建立的目录。
- --dbpath<数据库目录> 设置欲存放RPM数据库的目录。
- --dump 显示每个文件的验证信息。本参数需配合"-l"参数使用。
- --excludedocs 安装套件时,不要安装文件。
- --excludepath<排除目录> 忽略在指定目录里的所有文件。
- --force 强行置换套件或文件。
- --ftpproxy<主机名称或IP地址> 指定FTP代理服务器。
- --ftpport<通信端口> 设置FTP服务器或代理服务器使用的通信端口。
- --help 在线帮助。
- --httpproxy<主机名称或IP地址> 指定HTTP代理服务器。
- --httpport<通信端口> 设置HTTP服务器或代理服务器使用的通信端口。
- --ignorearch 不验证套件档的结构正确性。
- --ignoreos 不验证套件档的结构正确性。
- --ignoresize 安装前不检查磁盘空间是否足够。
- --includedocs 安装套件时,一并安装文件。
- --initdb 确认有正确的数据库可以使用。
- --justdb 更新数据库,当不变动任何文件。
- --nobulid 不执行任何完成阶段。
- --nodeps 不验证套件档的相互关联性。
- --nofiles 不验证文件的属性。
- --nogpg 略过所有GPG的签名认证。
- --nomd5 不使用MD5编码演算确认文件的大小与正确性。
- --nopgp 略过所有PGP的签名认证。
- --noorder 不重新编排套件的安装顺序,以便满足其彼此间的关联性。
- --noscripts 不执行任何安装Script文件。
- --notriggers 不执行该套件包装内的任何Script文件。
- --oldpackage 升级成旧版本的套件。
- --percent 安装套件时显示完成度百分比。
- --pipe<执行指令> 建立管道,把输出结果转为该执行指令的输入数据。
- --prefix<目的目录> 若重新配置文件,就把文件放到指定的目录下。
- --provides 查询该套件所提供的兼容度。
- --queryformat<档头格式> 设置档头的表示方式。
- --querytags 列出可用于档头格式的标签。
- --rcfile<配置文件> 使用指定的配置文件。
- --rebulid<套件档> 安装原始代码套件,重新产生二进制文件的套件。
- --rebuliddb 以现有的数据库为主,重建一份数据库。
- --recompile<套件档> 此参数的效果和指定"--rebulid"参数类似,当不产生套件档。
- --relocate<原目录>=<新目录> 把本来会放到原目录下的文件改放到新目录。
- --replacefiles 强行置换文件。
- --replacepkgs 强行置换套件。
- --requires 查询该套件所需要的兼容度。
- --resing<套件档>+ 删除现有认证,重新产生签名认证。
- --rmsource 完成套件的包装后,删除原始代码。
- --rmsource<文件> 删除原始代码和指定的文件。
- --root<根目录> 设置欲当作根目录的目录。
- --scripts 列出安装套件的Script的变量。
- --setperms 设置文件的权限。
- --setugids 设置文件的拥有者和所属群组。
- --short-circuit 直接略过指定完成阶段的步骤。
- --sign 产生PGP或GPG的签名认证。
- --target=<安装平台>+ 设置产生的套件的安装平台。
- --test 仅作测试,并不真的安装套件。
- --timecheck<检查秒数> 设置检查时间的计时秒数。
- --triggeredby<套件档> 查询该套件的包装者。
- --triggers 展示套件档内的包装Script。
- --verify 此参数的效果和指定"-q"参数相同。
- --version 显示版本信息。
- --whatprovides<功能特性> 查询该套件对指定的功能特性所提供的兼容度。
- --whatrequires<功能特性> 查询该套件对指定的功能特性所需要的兼容度。
说明:插件安装命令
rpm -ivh httpd-2.2.3-22.0.1.el5.i386.rpm //使用rpm文件安装apache
rpm -uvh httpd-2.2.3-22.0.1.el5.i386.rpm //使用rpm更新apache
rpm -ev httpd //卸载/删除apache
7.14 date
Linux date 命令可以用来显示或设定系统的日期与时间。
语法
date [OPTION]... [+FORMAT]
date [-u] [-d datestr] [-s datestr] [--utc] [--universal] [--date=datestr] [--set=datestr] [--help] [--version] [+FORMAT] [MMDDhhmm[[CC]YY][.ss]]
- 可选参数
- -d, --date=STRING:通过字符串显示时间格式,字符串不能是'now'。
- -f, --file=DATEFILE:类似于--date; 一次从DATEFILE处理一行。
- -I[FMT], --iso-8601[=FMT]:按照 ISO 8601 格式输出时间,FMT 可以为'date'(默认),'hours','minutes','seconds','ns'。 可用于设置日期和时间的精度,例如:2006-08-14T02:34:56-0600。
- -R, --rfc-2822 : 按照 RFC 5322 格式输出时间和日期,例如: Mon, 14 Aug 2006 02:34:56 -0600。
- --rfc-3339=FMT:按照 RFC 3339 格式输出,FMT 可以为'date', 'seconds','ns'中的一个,可用于设置日期和时间的精度, 例如:2006-08-14 02:34:56-06:00。
- -r, --reference=FILE:显示文件的上次修改时间。
- -s, --set=STRING:根据字符串设置系统时间。
- -u, --utc, --universal:显示或设置协调世界时(UTC)。
- --help:显示帮助信息。
- --version:输出版本信息。
date -s "01/31/2010 23:59:53" ///设置系统时间
7.16 ftp
ftp IP/hostname //访问ftp服务器
mls *.html - //显示远程主机上文件列表
7.17 scp
Linux scp 命令用于 Linux 之间复制文件和目录。
scp 是 secure copy 的缩写, scp 是 linux 系统下基于 ssh 登陆进行安全的远程文件拷贝命令。
scp 是加密的,rcp 是不加密的,scp 是 rcp 的加强版。
语法
scp [-1246BCpqrv] [-c cipher] [-F ssh_config] [-i identity_file]
[-l limit] [-o ssh_option] [-P port] [-S program]
[[user@]host1:]file1 [...] [[user@]host2:]file2
简易写法:
scp [可选参数] file_source file_target
- 参数说明:
- -1: 强制scp命令使用协议ssh1
- -2: 强制scp命令使用协议ssh2
- -4: 强制scp命令只使用IPv4寻址
- -6: 强制scp命令只使用IPv6寻址
- -B: 使用批处理模式(传输过程中不询问传输口令或短语)
- -C: 允许压缩。(将-C标志传递给ssh,从而打开压缩功能)
- -p:保留原文件的修改时间,访问时间和访问权限。
- -q: 不显示传输进度条。
- -r: 递归复制整个目录。
- -v:详细方式显示输出。scp和ssh(1)会显示出整个过程的调试信息。这些信息用于调试连接,验证和配置问题。
- -c cipher: 以cipher将数据传输进行加密,这个选项将直接传递给ssh。
- -F ssh_config: 指定一个替代的ssh配置文件,此参数直接传递给ssh。
- -i identity_file: 从指定文件中读取传输时使用的密钥文件,此参数直接传递给ssh。
- -l limit: 限定用户所能使用的带宽,以Kbit/s为单位。
- -o ssh_option: 如果习惯于使用ssh_config(5)中的参数传递方式,
- -P port:注意是大写的P, port是指定数据传输用到的端口号
- -S program: 指定加密传输时所使用的程序。此程序必须能够理解ssh(1)的选项。
scp /opt/data.txt 192.168.1.101:/opt/ //将本地opt目录下的data文件发送到192.168.1.101服务器的opt目录下
八、系统管理
8.1 防火墙操作
service iptables status //查看iptables服务的状态
service iptables start //开启iptables服务
service iptables stop //停止iptables服务
service iptables restart //重启iptables服务
chkconfig iptables off //关闭iptables服务的开机自启动
chkconfig iptables on //开启iptables服务的开机自启动
##centos7 防火墙操作
systemctl status firewalld.service //查看防火墙状态
systemctl stop firewalld.service //关闭运行的防火墙
systemctl disable firewalld.service //永久禁止防火墙服务
8.2 修改主机名(CentOS 7)
hostnamectl set-hostname 主机名
8.3 ifconfig(查看网络)
Linux ifconfig命令用于显示或设置网络设备。
ifconfig可设置网络设备的状态,或是显示目前的设置。
语法
ifconfig [网络设备][down up -allmulti -arp -promisc][add<地址>][del<地址>][<hw<网络设备类型><硬件地址>][io_addr<I/O地址>][irq<IRQ地址>][media<网络媒介类型>][mem_start<内存地址>][metric<数目>][mtu<字节>][netmask<子网掩码>][tunnel<地址>][-broadcast<地址>][-pointopoint<地址>][IP地址]
- 参数说明:
- add<地址> 设置网络设备IPv6的IP地址。
- del<地址> 删除网络设备IPv6的IP地址。
- down 关闭指定的网络设备。
- <hw<网络设备类型><硬件地址> 设置网络设备的类型与硬件地址。
- io_addr<I/O地址> 设置网络设备的I/O地址。
- irq<IRQ地址> 设置网络设备的IRQ。
- media<网络媒介类型> 设置网络设备的媒介类型。
- mem_start<内存地址> 设置网络设备在主内存所占用的起始地址。
- metric<数目> 指定在计算数据包的转送次数时,所要加上的数目。
- mtu<字节> 设置网络设备的MTU。
- netmask<子网掩码> 设置网络设备的子网掩码。
- tunnel<地址> 建立IPv4与IPv6之间的隧道通信地址。
- up 启动指定的网络设备。
- -broadcast<地址> 将要送往指定地址的数据包当成广播数据包来处理。
- -pointopoint<地址> 与指定地址的网络设备建立直接连线,此模式具有保密功能。
- -promisc 关闭或启动指定网络设备的promiscuous模式。
- [IP地址] 指定网络设备的IP地址。
- [网络设备] 指定网络设备的名称。
ifconfig
8.4 修改IP
修改网络配置文件,文件地址:/etc/sysconfig/network-scripts/ifcfg-eth0
------------------------------------------------
主要修改以下配置:
TYPE=Ethernet //网络类型
BOOTPROTO=static //静态IP
DEVICE=ens00 //网卡名
IPADDR=192.168.1.100 //设置的IP
NETMASK=255.255.255.0 //子网掩码
GATEWAY=192.168.1.1 //网关
DNS1=192.168.1.1 //DNS
DNS2=8.8.8.8 //备用DNS
ONBOOT=yes //系统启动时启动此设置
-------------------------------------------------
修改保存以后使用命令重启网卡:service network restart
8.5 配置映射
修改文件: vi /etc/hosts
在文件最后添加映射地址,示例如下:
192.168.1.101 node1
192.168.1.102 node2
192.168.1.103 node3
配置好以后保存退出,输入命令:ping node1 ,可见实际 ping 的是 192.168.1.101。
8.6 ps(查看进程)
Linux ps (英文全拼:process status)命令用于显示当前进程的状态,类似于 windows 的任务管理器。
语法
ps [options] [--help]
- 参数:
- ps 的参数非常多, 在此仅列出几个常用的参数并大略介绍含义
- -A 列出所有的进程
- -w 显示加宽可以显示较多的资讯
- -au 显示较详细的资讯
- -aux 显示所有包含其他使用者的进程
- au(x) 输出格式 :
- USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
- USER: 行程拥有者
- PID: pid
- %CPU: 占用的 CPU 使用率
- %MEM: 占用的记忆体使用率
- VSZ: 占用的虚拟记忆体大小
- RSS: 占用的记忆体大小
- TTY: 终端的次要装置号码 (minor device number of tty)
- STAT: 该行程的状态:
- D: 无法中断的休眠状态 (通常 IO 的进程)
- R: 正在执行中
- S: 静止状态
- T: 暂停执行
- Z: 不存在但暂时无法消除
- W: 没有足够的记忆体分页可分配
- <: 高优先序的行程
- N: 低优先序的行程
- L: 有记忆体分页分配并锁在记忆体内 (实时系统或捱A I/O)
- START: 行程开始时间
- TIME: 执行的时间
- COMMAND:所执行的指令
ps -ef //查看所有正在运行的进程
ps -ef | grep 进程关键字 //查找指定进程格式:
8.7 kill(结束进程)
Linux kill 命令用于删除执行中的程序或工作。
kill 可将指定的信息送至程序。
预设的信息为 SIGTERM(15),可将指定程序终止。
预设的信息为 SIGKILL(9) 信息尝试强制删除程序。
程序或工作的编号可利用 ps 指令或 jobs 指令查看。
语法
kill [-s <信息名称或编号>][程序] 或 kill [-l <信息编号>]
- 参数说明:
- -l <信息编号> 若不加<信息编号>选项,则 -l 参数会列出全部的信息名称。
- -s <信息名称或编号> 指定要送出的信息。
- [程序] [程序]可以是程序的PID或是PGID,也可以是工作编号。
- 使用 kill -l 命令列出所有可用信号,最常用的信号是:
- 1 (HUP):重新加载进程。
- 9 (KILL):杀死一个进程。
- 15 (TERM):正常停止一个进程。
kill pid //杀死该pid的进程
kill -9 pid //强制杀死该进程
8.8 netstat(显示网络状态)
Linux netstat 命令用于显示网络状态。
利用 netstat 指令可让你得知整个 Linux 系统的网络情况。
语法
netstat [-acCeFghilMnNoprstuvVwx][-A<网络类型>][--ip]
- 参数说明:
- -a或--all 显示所有连线中的Socket。
- -A<网络类型>或--<网络类型> 列出该网络类型连线中的相关地址。
- -c或--continuous 持续列出网络状态。
- -C或--cache 显示路由器配置的快取信息。
- -e或--extend 显示网络其他相关信息。
- -F或--fib 显示路由缓存。
- -g或--groups 显示多重广播功能群组组员名单。
- -h或--help 在线帮助。
- -i或--interfaces 显示网络界面信息表单。
- -l或--listening 显示监控中的服务器的Socket。
- -M或--masquerade 显示伪装的网络连线。
- -n或--numeric 直接使用IP地址,而不通过域名服务器。
- -N或--netlink或--symbolic 显示网络硬件外围设备的符号连接名称。
- -o或--timers 显示计时器。
- -p或--programs 显示正在使用Socket的程序识别码和程序名称。
- -r或--route 显示Routing Table。
- -s或--statistics 显示网络工作信息统计表。
- -t或--tcp 显示TCP传输协议的连线状况。
- -u或--udp 显示UDP传输协议的连线状况。
- -v或--verbose 显示指令执行过程。
- -V或--version 显示版本信息。
- -w或--raw 显示RAW传输协议的连线状况。
- -x或--unix 此参数的效果和指定"-A unix"参数相同。
- --ip或--inet 此参数的效果和指定"-A inet"参数相同。
netstat -an //查看当前系统端口
netstat -an | grep 8080 //查看指定端口
netstat -a //显示详细的网络状况
netstat -nu //显示当前户籍UDP连接状况
netstat -i //显示网卡列表
8.9 ping
Linux ping 命令用于检测主机。
执行 ping 指令会使用 ICMP 传输协议,发出要求回应的信息,若远端主机的网络功能没有问题,就会回应该信息,因而得知该主机运作正常。
语法
ping [-dfnqrRv][-c<完成次数>][-i<间隔秒数>][-I<网络界面>][-l<前置载入>][-p<范本样式>][-s<数据包大小>][-t<存活数值>][主机名称或IP地址]
- 参数说明:
- -d 使用Socket的SO_DEBUG功能。
- -c <完成次数> 设置完成要求回应的次数。
- -f 极限检测。
- -i<间隔秒数> 指定收发信息的间隔时间。
- -I<网络界面> 使用指定的网络接口送出数据包。
- -l<前置载入> 设置在送出要求信息之前,先行发出的数据包。
- -n 只输出数值。
- -p<范本样式> 设置填满数据包的范本样式。
- -q 不显示指令执行过程,开头和结尾的相关信息除外。
- -r 忽略普通的Routing Table,直接将数据包送到远端主机上。
- -R 记录路由过程。
- -s<数据包大小> 设置数据包的大小。
- -t<存活数值> 设置存活数值TTL的大小。
- -v 详细显示指令的执行过程。
- -w <deadline> 在 deadline 秒后退出。
- -W <timeout> 在等待 timeout 秒后开始执行。
ping IP //查看与此IP地址的连接情况
8.10 远程主机
ssh IP //远程主机,需要输入用户名和密码
九、磁盘管理
十、工具大全
1. 日志信息的工具
1.1 journalctl
- journalctl 是 systemd-journald 服务的一个前端,用于检查和查询系统日志。
- 它使用 systemd 的日志系统,将日志信息存储在二进制日志文件中,这些文件通常位于 /var/log/journal/ 目录下。
- journalctl 提供了强大的查询功能,允许按时间范围、单元(service)、日志级别等条件来过滤日志信息。
- 它支持彩色输出和更友好的格式化,使得阅读日志更加方便。
语法:
journalctl [选项...] [匹配项...]
参数说明:
--system 显示系统日志
--user 显示当前用户的用户日志
-M --machine=CONTAINER 对本地容器进行操作
-S --since=DATE 显示不早于指定日期的条目
-U --until=DATE 显示不晚于指定日期的条目
-c --cursor=CURSOR 从指定的游标开始显示条目
--after-cursor=CURSOR 显示指定游标之后的条目
--show-cursor 在所有条目后打印游标
--cursor-file=FILE 显示文件中游标后的条目并更新文件
-b --boot[=ID] 显示当前启动或指定的启动
--list-boots 显示有关记录启动的简洁信息
-k --dmesg 显示当前启动的内核消息日志
-u --unit=UNIT 显示指定单元的日志
--user-unit=UNIT 显示指定用户单元的日志
-t --identifier=STRING 显示具有指定syslog标识符的条目
-p --priority=RANGE 显示具有指定优先级的条目
--facility=FACILITY... 显示具有指定设施的条目
-g --grep=PATTERN 显示与PATTERN匹配的MESSAGE的条目
--case-sensitive[=BOOL] 强制进行大小写敏感或不敏感的匹配
-e --pager-end 在分页器中立即跳到末尾
-f --follow 跟踪日志
-n --lines[=INTEGER] 要显示的日志条目数量
--no-tail 即使在跟踪模式下也显示所有行
-r --reverse 先显示最新的条目
-o --output=STRING 改变日志输出模式 (short, short-precise,
short-iso, short-iso-precise, short-full,
short-monotonic, short-unix, verbose, export,
json, json-pretty, json-sse, json-seq, cat,
with-unit)
--output-fields=LIST 在verbose/export/json模式下选择要打印的字段
--utc 以协调世界时(UTC)表示时间
-x --catalog 在可用的地方添加消息解释
--no-full 缩略字段
-a --all 显示所有字段,包括长和不可打印的
-q --quiet 不显示信息消息和权限警告
--no-pager 不将输出管道输出到分页器
--no-hostname 抑制主机名字段的输出
-m --merge 显示所有可用日志的条目
-D --directory=PATH 显示来自目录的日志文件
--file=PATH 显示日志文件
--root=ROOT 在根目录下操作文件
--namespace=NAMESPACE 显示指定命名空间的日志数据
--interval=TIME 更改FSS密封键的时间间隔
--verify-key=KEY 指定FSS验证键
--force 使用--setup-keys覆盖FSS密钥对
命令:
-h --help 显示此帮助文本
--version 显示包版本
-N --fields 列出当前使用的所有字段名称
-F --field=FIELD 列出指定字段采取的所有值
--disk-usage 显示所有日志文件的总磁盘使用量
--vacuum-size=BYTES 将磁盘使用量减少到指定大小以下
--vacuum-files=INT 只保留指定数量的日志文件
--vacuum-time=TIME 删除早于指定时间的日志文件
--verify 验证日志文件的一致性
--sync 将未写入的日志消息同步到磁盘
--relinquish-var 停止记录到磁盘,记录到临时文件系统
--smart-relinquish-var 类似,但如果日志目录在根挂载上,则无操作
--flush 将所有日志数据从 /run 刷新到 /var
--rotate 请求立即旋转日志文件
--header 显示日志头信息
--list-catalog 在目录中显示所有消息ID
--dump-catalog 显示消息目录中的条目
--update-catalog 更新消息目录数据库
--setup-keys 生成新的FSS密钥对
常用
- 查看所有日志(分页输出):
journalctl
- 查看所有日志(不分页输出):
journalctl --no-pager
- 按时间倒序查看所有日志:
journalctl -r
- 查看最新的 10 条日志:
journalctl -n 10
- 实时查看新添加的日志条目:
journalctl -f
- 只显示错误级别的日志
journalctl -p err
- 根据服务名称过滤:
journalctl -u nginx
- 根据进程 ID 过滤:
journalctl _PID=2001
- 根据优先级过滤(0-7,0 表示最重要):
journalctl -p err -b
- 时间戳允许你查找特定时间范围内的日志条目。
journalctl --since="2024-03-01" --until="2024-04-24 03:00"
- 清除所有日志:
sudo journalctl --vacuum-time=1s
- 清除超过特定大小的日志:
journalctl --vacuum-size=1
这将删除所有日志,直到系统日志的总大小降到1(单位为BYTE)。
- 查看日志占用空间大小。
journalctl --disk-usage
- 暴力方式直接删除日志文件。
sudo systemctl stop systemd-journald
sudo rm -rf /var/log/journal/*
sudo systemctl start systemd-journald
1.2 dmesg
dmesg
显示系统启动时的日志信息,包含了内核和设备驱动程序的消息。- 它输出的是当前内核环缓冲区的内容,通常包括硬件检测、设备初始化等启动时的信息。
dmesg
不存储日志到文件,仅显示缓冲区的内容。如果系统启动后时间较长,可以使用dmesg -T
以人类可读的时间戳显示。
语法
dmesg [-cn][-s <缓冲区大小>]
参数说明:
-
-c 显示信息后,清除 ring buffer 中的内容。
-
-s<缓冲区大小> 预设置为 8196,刚好等于 ring buffer 的大小。
-
-n 设置记录信息的层级。
-
直接输入dmesg即可输出所有的mesg信息到终端,有的发行版本可能需要root权限
-
设置不需要root也可以查看:
sudo sysctl -w kernel.dmesg_restrict=0
常用设置
dmesg -L # color
dmesg -H # human timestamp
dmesg -T # readable timestamp
dmesg --follow # 持续观察输出
dmesg | tail -10 # 最后10行,当然也可以使用其它管线命令,如more,less,grep
日志级别
emerg: System is unusable.
alert: Action must be taken immediately.
crit: Critical conditions.
err: Error conditions.
warn: Warning conditions.
notice: Normal but significant condition.
info: Informational.
debug: Debug-level messages.
使用 dmesg -l info
仅输出 info 级别的日志,这不包括更高级别的日志。
dmesg -l debug,notice
同时输出多种级别的日志。
用户组
kern: Kernel messages.
user: User-level messages.
mail: Mail system.
daemon: System daemons.
auth: Security/authorization messages.
syslog: Internal syslogd messages.
lpr: Line printer subsystem.
news: Network news subsystem.
使用-f(facility)'参数过滤组。 使用
-x(decode) 参数可以输出包括组和日志级别的信息。 **清除旧内容** 对于服务器,本操作请谨慎使用,清除后不会再恢复。 对于嵌入式设备的调试,它会比较清楚地展现当前的log信息。
dmesg -c`
显示并清除当前的日志内容。
下次再 dmesg 时就没有以前的日志了。