Linux熟练掌握的必备
本部分参考这个:
https://blog.csdn.net/qq_23853743/article/details/84037598
进阶部分参考这个:
https://blog.csdn.net/u014427391/article/details/102785219
https://blog.csdn.net/qq_40334837/article/details/83819735
-l
-a
-h
-R
无
这个不用多说
rmdir移除空目录
无
> 重定向
功能相同
less更牛批
显示头尾的n行
-n
-g
创建一个用户user1,同时在/etc/passwd文件和/etc/shadow文件增加一行,并自动为用户创建相应的主目录:/home/user1
-u
-g
-G
-d
-r
当某个组是某现有用户的主要组时,则不能被删除
普通用户只可以修改自己的口令
-l
-u
-d
UID号修改为601、主要组修改为501
-u
-g
显示用户的UID、GID及所属的组信息
change own
改变文件的属主
-R
改变文件的属组
-R
以二进制编码的形式进行权限赋值
建立硬链接 & 软连接
-s
无参数
参考博客:
https://blog.csdn.net/lilygg/article/details/84076757
find 目录 参数 参数值
-name "name" 查找name文件
-user "user" 查找属于某用户的文件
-group "group" 查找属于某用户组的文件
-maxdepth 1 查看多深的文件,不能超过所限制的目录下的内容
-mindepth 2 查看不小于多深的文件,不低于所限制内容
# 这个要放到参数的最前头
-size 20K 按文件大小查找20K 的文件
-size -20K 查找不大于20K的文件
-size +20K 查找大于 20K的文件
# 这种+-在后头的参数中也有用到
-type 查找指定类型的文件
#主要的文件类型:
f #file 普通文件
d #dir 目录
b #block 块设备
s #socket 套接字
c #char 字符设备
l #link 链接
p #pipe 管道
-cmin 5 查看距现在5分钟时修改
-cmin -5 查看五分钟内修改的文件
-cmin +5 五分钟之前修改的文件
-ctime 5 五内的时间点修改过的文件
-ctime +5 五天前修改或的文件
-ctime -5 小于五天修改过的文件
-perm 按权限查找
-perm 555 查找权限为555的文件
-perm -444 查找所有人 所有组 其他人 有读权限的文件
-perm /444 查找所有人 或所有组 或其他人 至少有一个有读权限的文件
找到temp目录下7天之内以log结尾的文件, 并删除
find ./temp/ -type f -name "*log" -ctime -5 -print
而删除文件使用的是xargs
xargs用来给命令传递参数, 通常可以用在管道中
xargs详细命令:
https://www.linuxprobe.com/linux-xargs-usage.html
find ./temp/ -type f -name "*log" -ctime -5 -print | xargs -n 1 rm
也可以使用grep配合正则表达式执行
find . -type f | grep ".*log" | xargs rm -r
-v
-E :开启扩展(Extend)的正则表达式。
-i :忽略大小写(ignore case)。
-v :反过来(invert),只打印没有匹配的,而匹配的反而不打印。
-n :显示行号
-w :被匹配的文本只能是单词,而不能是单词中的某一部分,如文本中有liker,而我搜寻的只是like,就可以使用-w选项来避免匹配liker
-c :显示总共有多少行被匹配到了,而不是显示被匹配到的内容,注意如果同时使用-cv选项是显示有多少行没有被匹配到。
-o :只显示被模式匹配到的字符串。
--color :将匹配到的内容以颜色高亮显示。
-A n:显示匹配到的字符串所在的行及其后n行,after
-B n:显示匹配到的字符串所在的行及其前n行,before
-C n:显示匹配到的字符串所在的行及其前后各n行,context
常用参数
-l -c -w
将指定文件以行为单位按字典序正序/逆序输出
即将每行都视为一个字符串, 以 字典序排序后输出
-r
比较文件test与mytest是否相同,将****不同****之处输出到屏幕上。
详细参考:
https://blog.csdn.net/yangshangwei/article/details/52563123
rz & sz 利用ZModem协议与Linux服务器上传/下载文件
rz & sz的使用条件
这个命令就没啥好讲的了
查看文件大小
tar
是 Linux 中最常用的 备份工具,此命令可以 把一系列文件 打包到 一个大文件中,也可以把一个 打包的大文件恢复成一系列文件tar
的命令格式如下:# 打包文件
tar -cvf 打包文件.tar 被打包的文件/路径...
# 解包文件
tar -xvf 打包文件.tar
tar
选项说明选项 | 含义 |
---|---|
c | 建立新的压缩文件 |
x | 从压缩的文件中提取文件(解压缩) |
v | 列出归档解档的详细过程,显示进度 |
f | 指定档案文件名称,f 后面一定是 .tar 文件,所以必须放选项最后, 且这个玩意为必选 |
必要参数有如下:
-A 新增压缩文件到已存在的压缩
-c 建立新的压缩文件
-d 记录文件的差别
-r 添加文件到已经压缩的文件
-u 添加改变了和现有的文件到已经存在的压缩文件
-x 从压缩的文件中提取文件
-t 显示压缩文件的内容
-z 支持``gzip``解压文件
-j 支持``bzip2``解压文件
-Z 支持compress解压文件
-v 显示操作过程
-l 文件系统边界设置
-k 保留原有文件不覆盖
-m 保留文件不被覆盖
-W 确认压缩文件的正确性
-C 解压到指定目录
tar
与 gzip
命令结合可以使用实现文件 打包和压缩
tar
只负责打包文件,但不压缩gzip
压缩 tar
打包后的文件,其扩展名一般用 xxx.tar.gz
在
Linux
中,最常见的压缩文件格式就是xxx.tar.gz
tar
命令中有一个选项 -z 可以调用 gzip
,从而可以方便的实现压缩和解压缩的功能# 压缩文件
tar -zcvf 打包文件.tar.gz 被压缩的文件/路径...
# 解压缩文件
tar -zxvf 打包文件.tar.gz
# 解压缩到指定路径
tar -zxvf 打包文件.tar.gz -C 目标路径
选项 | 含义 |
---|---|
-C | 解压缩到指定目录,注意:要解压缩的目录必须存在 |
当解压目录不存在时:
打包解包压缩解压上头的就是
此为另一种常用的压缩格式
tar
与 bzip2
命令结合可以使用实现文件 打包和压缩(用法和 gzip
一样)
tar
只负责打包文件,但不压缩,bzip2
压缩 tar
打包后的文件,其扩展名一般用 xxx.tar.bz2
tar
命令中有一个选项 -j 可以调用 bzip2
,从而可以方便的实现压缩和解压缩的功能-z
换成-j
即可# 压缩文件
tar -jcvf 打包文件.tar.bz2 被压缩的文件/路径...
# 解压缩文件
tar -jxvf 打包文件.tar.bz2
设置网卡参数:
ifconfig eth0 10.22.1.103 netmask 255.255.255.0
禁用 & 激活某块网卡:
ifconfig eth0 down
ifconfig eth0 up
查询系统中安装的软件包
rpm -qa
查询软件包中文件清单
rpm -ql php
卸载指定的软件包
rpm -e php
安装软件包
rpm -ivh php-4.3.9-3.1-i386.rpm
-h
通常都表示人性化
强制安装软件包
rpm -ivh --force php-4.3.9-3.1-i386.rpm
如果要安装的软件的版本****比较低或该软件包在系统中已存在****,系统会给出提示并拒绝安装,此时可以加上参数—force来进行强制安装
忽略依赖关系安装:
rpm -ivh --nodeps php-4.3.9-3.1-i386.rpm
在安装或卸载软件时经常会遇到提示“该软件包与某某软件包存在依赖关系”,只有加上参数****–nodeps****忽略掉依赖关系才能进行安装或卸载
这两个用的都比较多, 暂时不复习了
./configure
make
make install
make clean与make distclean
常用命令
命令参数:
a 显示所有进程
-a 显示同一终端下的所有程序
-A 显示所有进程
c 显示进程的真实名称
-N 反向选择
-e 显示所有进程, 等于-A
e 显示环境变量
f 显示程序间的关系
-H 显示树状结构
r 显示当前终端的进程
T 显示当前终端的所有程序
u 指定用户的所有进程
-au 显示较详细的资讯
-aux 显示所有包含其他使用者的进程
-C<命令> 列出指定命令的状况
--lines<行数> 每页显示的行数
--width<字符数> 每页显示的字符数
--help 显示帮助信息
--version 显示版本显示
这里的三种前缀: 不带-
, 带-
, 带--
, 是因为, ps支持三种风格的参数:
常用的使用方式:
https://linux.cn/article-4743-1.html
# 显示所有进程信息, 包括命令行
ps -e
ps -ef
ps -eF
ps -ely
# 显示进程树
ps -ejH
ps axjf
# 获取线程信息
ps -eLf
ps axms
# 查看指定用户的进程信息
ps -U root -u root u
# 将目前属于您自己这次登入的 PID 与相关信息列示出来
ps -l
这里的-l
相当于显示更多信息
这个不同多说
但是参数很多, 有空可以看一下
这里的不同显示行都可以使用相应的按键(交互式)切换显示模式
第一行: 系统运行时间和平均负载
l键切换模式
第二行: 任务或者进程的总结
第三行: CPU状态
t键切换模式
第四行: 内存使用
m键切换模式
PID
进程ID,进程的唯一标识符
USER
进程所有者的实际用户名。
PR
进程的调度优先级。这个字段的一些值是’rt’。这意味这这些进程运行在实时态。
NI
进程的nice值(优先级)。越小的值意味着越高的优先级。
VIRT
进程使用的虚拟内存。
RES
驻留内存大小。驻留内存是任务使用的非交换物理内存大小。
SHR
SHR是进程使用的共享内存。
S
这个是进程的状态。它有以下不同的值:
%CPU
自从上一次更新时到现在任务所使用的CPU时间百分比。
%MEM
进程使用的可用物理内存百分比。
TIME+
任务启动后到现在所使用的全部CPU时间,精确到百分之一秒。
COMMAND
运行进程所使用的命令。
还有许多在默认情况下不会显示的输出,它们可以显示进程的页错误、有效组和组ID和其他更多的信息。
显示进程信息
# top
显示完整命令
# top -c
以批处理模式显示程序信息
# top -b
以累积模式显示程序信息
# top -S
设置信息更新次数
top -n 2
//表示更新两次后终止更新显示
设置信息更新时间
# top -d 3
//表示更新周期为3秒
显示指定的进程信息
# top -p 139
//显示进程号为139的进程信息,CPU、内存占用率等
显示更新十次后退出
top -n 10
安全模式, 使用者将不能利用交谈式指令来对行程下命令
top -s
‘h’: 帮助
回车或空格: 手动刷新显示
‘A’: 切换交替显示模式
按了A
接着按a
可以切换4种显示模式
‘B’: 触发粗体显示
‘d’ 或‘s’: 设置显示的刷新间隔
‘l’、‘t’、‘m’: 切换负载、任务、内存信息的显示
‘f’: 字段管理
‘R’: 反向排序
‘c’: 触发命令
‘i’: 空闲任务
‘V’: 树视图
‘Z’: 改变配色
‘z’: 切换彩色显示
‘x’ 或者 ‘y’ 切换高亮显示
‘u’: 特定用户的进程
‘n’ 或 ‘#’: 任务的数量
‘k’: 结束任务
‘r’: 重新设置优先级
-9
free 命令能够显示系统中物理上的空闲和已用内存,还有交换内存,同时,也能显示被内核使用的缓冲和缓存
常用参数:
几个表项的意义都很明了
用于显示系统资源限制的信息
这里主要关注两个信息:
其中每个参数在图中都有提示使用哪个参数进行设置
如open files使用-n
来临时设置
-A/--user-agent 设置用户代理发送给服务器
-b/--cookie cookie字符串或文件读取位置
-c/--cookie-jar 操作结束后把cookie写入到这个文件中
-C/--continue-at 断点续转
-D/--dump-header 把header信息写入到该文件中
-e/--referer 来源网址
-f/--fail 连接失败时不显示http错误
-o/--output 把输出写到该文件中
-O/--remote-name 把输出写到该文件中,保留远程文件的文件名
-r/--range 检索来自HTTP/1.1或FTP服务器字节范围
-s/--silent 静音模式。不输出任何东西
-T/--upload-file 上传文件
-u/--user 设置服务器的用户和密码
-w/--write-out [format] 什么输出完成后
-x/--proxy 在给定的端口上使用HTTP代理
==这里为了页面精简, 删了输出部分, 详细的直接看参考博客:
https://www.jb51.net/article/118402.htm
1. 获取页面内容
当我们不加任何选项使用 curl 时,默认会发送 GET 请求来获取链接内容到标准输出。
curl http:``//www``.codebelief.com
2. 显示 HTTP 头
如果我们只想要显示 HTTP 头,而不显示文件内容,可以使用 -I 选项:
curl -I http:``//www``.codebelief.com
也可以同时显示 HTTP 头和文件内容,使用 -i 选项:
curl -i http:``//www``.codebelief.com
3. 将链接保存到文件
我们可以使用 > 符号将输出重定向到本地文件中。
curl http:``//www``.codebelief.com > index.html
也可以通过 curl 自带的 -o
/-O
选项将内容保存到文件中。
-o
(小写的 o):结果会被保存到命令行中提供的文件名-O
(大写的 O):URL 中的文件名会被用作保存输出的文件名curl -o index.html http:``//www``.codebelief.com ``curl -O http:``//www``.codebelief.com``/page/2/
**注意:**使用 -O
选项时,必须确保链接末尾包含文件名,否则 curl 无法正确保存文件。如果遇到链接中无文件名的情况,应该使
用 -o
选项手动指定文件名,或使用重定向符号。
4. 同时下载多个文件
我们可以使用 -o
或 -O
选项来同时指定多个链接,按照以下格式编写命令:
curl -O http:``//www``.codebelief.com``/page/2/` `-O http:``//www``.codebelief.com``/page/3/
或者:
curl -o page1.html http:``//www``.codebelief.com``/page/1/` `-o page2.html http:``//www``.codebelief.com``/page/2/
5. 使用 -L 跟随链接重定向
如果直接使用 curl 打开某些被重定向后的链接,这种情况下就无法获取我们想要的网页内容。例如:
curl http:``//codebelief``.com
而当我们通过浏览器打开该链接时,会自动跳转到 http://www.codebelief.com。此时我们想要 curl 做的,就是像浏览器一样跟随链接的跳转,获取最终的网页内容。我们可以在命令中添加 -L 选项来跟随链接重定向:
curl -L http:``//codebelief``.com
这样我们就能获取到经过重定向后的网页内容了。
6. 使用 -A 自定义 User-Agent
我们可以使用 -A
来自定义用户代理,例如下面的命令将伪装成安卓火狐浏览器对网页进行请求:
curl -A ``"Mozilla/5.0 (Android; Mobile; rv:35.0) Gecko/35.0 Firefox/35.0"` `http:``//www``.baidu.com
下面我们会使用 -H 来实现同样的目的。
7. 使用 -H 自定义 header
当我们需要传递特定的 header 的时候,可以仿照以下命令来写:
curl -H ``"Referer: www.example.com"` `-H ``"User-Agent: Custom-User-Agent"` `http:``//www``.baidu.com
可以看到,当我们使用 -H
来自定义 User-Agent 时,需要使用 “User-Agent: xxx
” 的格式。
我们能够直接在 header 中传递 Cookie,格式与上面的例子一样:
curl -H ``"Cookie: JSESSIONID=D0112A5063D938586B659EF8F939BE24"` `http:``//www``.example.com
另一种方式会在下面介绍。
8. 使用 -c 保存 Cookie
当我们使用 cURL 访问页面的时候,默认是不会保存 Cookie 的。有些情况下我们希望保存 Cookie 以便下次访问时使用。例如登陆了某个网站,我们希望再次访问该网站时保持登陆的状态,这时就可以现将登陆时的 Cookie 保存起来,下次访问时再读取。
-c
后面跟上要保存的文件名。
curl -c ``"cookie-example"` `http:``//www``.example.com
9. 使用 -b 读取 Cookie
前面讲到了使用 -H
来发送 Cookie 的方法,这种方式是直接将 Cookie 字符串写在命令中。如果使用 -b 来自定义 Cookie,命令如下:
curl -b ``"JSESSIONID=D0112A5063D938586B659EF8F939BE24"` `http:``//www``.example.com
如果要从文件中读取 Cookie,-H 就无能为力了,此时可以使用 -b
来达到这一目的:
curl -b ``"cookie-example"` `http:``//www``.example.com
即 -b
后面既可以是 Cookie 字符串,也可以是保存了 Cookie 的文件名。
10. 使用 -d 发送 POST 请求
我们以登陆网页为例来进行说明使用 cURL 发送 POST 请求的方法。假设有一个登录页面 www.example.com/login,只需要提交用户名和密码便可登录。我们可以使用 cURL 来完成这一 POST 请求,-d 用于指定发送的数据,-X 用于指定发送数据的方式:
curl -d ``"userName=tom&passwd=123456"` `-X POST http:``//www``.example.com``/login
在使用 -d
的情况下,如果省略 -X
,则默认为 POST 方式:
curl -d ``"userName=tom&passwd=123456"` `http:``//www``.example.com``/login
强制使用 GET 方式
发送数据时,不仅可以使用 POST 方式,也可以使用 GET 方式,例如:
curl -d ``"somedata"` `-X GET http:``//www``.example.com``/api
或者使用 -G
选项:
curl -d ``"somedata"` `-G http:``//www``.example.com``/api
从文件中读取 data
curl -d ``"@data.txt"` `http:``//www``.example.com``/login
带 Cookie 登录
当然,如果我们再次访问该网站,仍然会变成未登录的状态。我们可以用之前提到的方法保存 Cookie,在每次访问网站时都带上该 Cookie 以保持登录状态。
curl -c ``"cookie-login"` `-d ``"userName=tom&passwd=123456"` `http:``//www``.example.com``/login
再次访问该网站时,使用以下命令:
curl -b ``"cookie-login"` `http:``//www``.example.com``/login
这样,就能保持访问的是登录后的页面了。
第三方软件, 可能不会问到
看当前用户的环境信息
lists openfiles
在Linux中, 所有的一切都是文件, 包括Socket等, 所以lsof的功能非常强大, 甚至可以替代 netstat & ps
东西非常多, 有详细需要直接看教程
参考资料:
https://www.jianshu.com/p/a3aa6b01b2e1
正如我所说的,我主要将lsof用于获取关于系统怎么和网络交互的信息。这里提供了关于此信息的一些主题:
有些人喜欢用netstat来获取网络连接,但是我更喜欢使用lsof来进行此项工作。结果以对我来说很直观的方式呈现,我仅仅只需改变我的语法,就可以通过同样的命令来获取更多信息。
语法: lsof -i[46] [protocol][@hostname|hostaddr][:service|port]
1. # lsof -i
3. COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME
4. dhcpcd 6061 root 4u IPv4 4510 UDP *:bootpc
5. sshd 7703 root 3u IPv6 6499 TCP *:ssh (LISTEN)
6. sshd 7892 root 3u IPv6 6757 TCP 10.10.1.5:ssh->192.168.1.5:49901 (ESTABLISHED)
1. # lsof -i 6
你也可以通过在-i后提供对应的协议来仅仅显示TCP或者UDP连接信息。
1. # lsof -iTCP
3. COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME
4. sshd 7703 root 3u IPv6 6499 TCP *:ssh (LISTEN)
5. sshd 7892 root 3u IPv6 6757 TCP 10.10.1.5:ssh->192.168.1.5:49901 (ESTABLISHED)
或者,你也可以通过端口搜索,这对于要找出什么阻止了另外一个应用绑定到指定端口实在是太棒了。
1. # lsof -i :22
3. COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME
4. sshd 7703 root 3u IPv6 6499 TCP *:ssh (LISTEN)
5. sshd 7892 root 3u IPv6 6757 TCP 10.10.1.5:ssh->192.168.1.5:49901 (ESTABLISHED)
这对于你在检查是否开放连接到网络中或互联网上某个指定主机的连接时十分有用。
1. # lsof [email protected]
3. sshd 7892 root 3u IPv6 6757 TCP 10.10.1.5:ssh->172.16.12.5:49901 (ESTABLISHED)
你也可以组合主机与端口的显示信息。
1. # lsof [email protected]:22
3. sshd 7892 root 3u IPv6 6757 TCP 10.10.1.5:ssh->172.16.12.5:49901 (ESTABLISHED)
找出正等候连接的端口。
1. # lsof -i -sTCP:LISTEN
你也可以grep “LISTEN”来完成该任务。
1. # lsof -i | grep -i LISTEN
3. iTunes 400 daniel 16u IPv4 0x4575228 0t0 TCP *:daap (LISTEN)
你也可以显示任何已经连接的连接。
1. # lsof -i -sTCP:ESTABLISHED
你也可以通过grep搜索“ESTABLISHED”来完成该任务。
1. # lsof -i | grep -i ESTABLISHED
3. firefox-b 169 daniel 49u IPv4 0t0 TCP 1.2.3.3:1863->1.2.3.4:http (ESTABLISHED)
你也可以获取各种用户的信息,以及它们在系统上正干着的事情,包括它们的网络活动、对文件的操作等。
1. # lsof -u daniel
3. -- snipped --
4. Dock 155 daniel txt REG 14,2 2798436 823208 /usr/lib/libicucore.A.dylib
5. Dock 155 daniel txt REG 14,2 1580212 823126 /usr/lib/libobjc.A.dylib
6. Dock 155 daniel txt REG 14,2 2934184 823498 /usr/lib/libstdc++.6.0.4.dylib
7. Dock 155 daniel txt REG 14,2 132008 823505 /usr/lib/libgcc_s.1.dylib
8. Dock 155 daniel txt REG 14,2 212160 823214 /usr/lib/libauto.dylib
9. -- snipped --
1. # lsof -u ^daniel
3. -- snipped --
4. Dock 155 jim txt REG 14,2 2798436 823208 /usr/lib/libicucore.A.dylib
5. Dock 155 jim txt REG 14,2 1580212 823126 /usr/lib/libobjc.A.dylib
6. Dock 155 jim txt REG 14,2 2934184 823498 /usr/lib/libstdc++.6.0.4.dylib
7. Dock 155 jim txt REG 14,2 132008 823505 /usr/lib/libgcc_s.1.dylib
8. Dock 155 jim txt REG 14,2 212160 823214 /usr/lib/libauto.dylib
9. -- snipped --
可以消灭指定用户运行的所有东西,这真不错。
1. # kill -9 `lsof -t -u daniel`
可以查看指定程序或进程由什么启动,这通常会很有用,而你可以使用lsof通过名称或进程ID过滤来完成这个任务。下面列出了一些选项:
1. # lsof -c syslog-ng
3. COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME
4. syslog-ng 7547 root cwd DIR 3,3 4096 2 /
5. syslog-ng 7547 root rtd DIR 3,3 4096 2 /
6. syslog-ng 7547 root txt REG 3,3 113524 1064970 /usr/sbin/syslog-ng
7. -- snipped --
1. # lsof -p 10075
3. -- snipped --
4. sshd 10068 root mem REG 3,3 34808 850407 /lib/libnss_files-2.4.so
5. sshd 10068 root mem REG 3,3 34924 850409 /lib/libnss_nis-2.4.so
6. sshd 10068 root mem REG 3,3 26596 850405 /lib/libnss_compat-2.4.so
7. sshd 10068 root mem REG 3,3 200152 509940 /usr/lib/libssl.so.0.9.7
8. sshd 10068 root mem REG 3,3 46216 510014 /usr/lib/liblber-2.3
9. sshd 10068 root mem REG 3,3 59868 850413 /lib/libresolv-2.4.so
10. sshd 10068 root mem REG 3,3 1197180 850396 /lib/libc-2.4.so
11. sshd 10068 root mem REG 3,3 22168 850398 /lib/libcrypt-2.4.so
12. sshd 10068 root mem REG 3,3 72784 850404 /lib/libnsl-2.4.so
13. sshd 10068 root mem REG 3,3 70632 850417 /lib/libz.so.1.2.3
14. sshd 10068 root mem REG 3,3 9992 850416 /lib/libutil-2.4.so
15. -- snipped --
1. # lsof -t -c Mail
3. 350
通过查看指定文件或目录,你可以看到系统上所有正与其交互的资源——包括用户、进程等。
1. # lsof /var/log/messages/
3. COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME
4. syslog-ng 7547 root 4w REG 3,3 217309 834024 /var/log/messages
1. # lsof /home/daniel/firewall_whitelist.txt
与tcpdump类似,当你开始组合查询时,它就显示了它强大的功能。
1. # lsof -u daniel -i @1.1.1.1
3. bkdr 1893 daniel 3u IPv6 3456 TCP 10.10.1.10:1234->1.1.1.1:31337 (ESTABLISHED)
1. # kill -HUP `lsof -t -c sshd`
这通常(当不总是)表示某个攻击者正尝试通过删除文件入口来隐藏文件内容。
1. # lsof +L1
3. (hopefully nothing)
1. # lsof -i @fw.google.com:2150=2180
ip 命令与 ifconfig 命令类似,但比 ifconfig 命令更加强大,主要功能是用于显示或设置网络设备
ip 命令是 Linux 加强版的的网络配置工具,用于代替 ifconfig 命令
ip [ OPTIONS ] OBJECT {
COMMAND | help }
这里直接参考教程:
https://linux.cn/article-3144-1.html
disk usage 用于显示目录或文件的大小
du [-abcDhHklmsSx][-L <符号连接>][-X <文件>][--block-size][--exclude=<目录或文件>][--max-depth=<目录层数>][--help][--version][目录或文件]
常用参数:
-a #显示目录中文件的大小 单位 KB 。
-b #显示目录中文件的大小,以字节byte为单位。
-c #显示目录中文件的大小,同时也显示总和;单位KB。
-k 、 -m 、#显示目录中文件的大小,-k 单位KB,-m 单位MB.
-s #仅显示目录的总值,单位KB。
更多参数:
不是自带命令, 可能不会考
启动指令:service iptables start
重启指令:service iptables restart
关闭指令:service iptables stop
过于复杂, 先放着
sestatus命令将显示SELinux启用状态。还显示有关SELinux的其他信息
感觉用处不是很大, 先放着
“history”命令就是历史记录。它显示了在终端中所执行过的所有命令的历史
常用操作:
history # 显示终端执行过的命令
history 10 # 显示最近10条终端执行过的命令
Ctrl+r # 搜索已经执行过的命令,它可以你写命令时自动补全
-c 将目前shell中的所有history命令消除
-a 将目前新增的命令写入histfiles, 默认写入~/.bash_history
-r 将histfiles内容读入到目前shell的history记忆中
-w 将目前history记忆的内容写入到histfiles
命令用于显示磁盘分区上的可使用的磁盘空间
默认单位是kb, 可使用-h
人性化显示
常用参数:
更多:
-a或–all:包含全部的文件系统;
–block-size=<区块大小>:以指定的区块大小来显示区块数目;
-h或–human-readable:以可读性较高的方式来显示信息;
-H或–si:与-h参数相同,但在计算时是以1000 Bytes为换算单位而非1024 Bytes;
-i或–inodes:显示inode的信息;
-k或–kilobytes:指定区块大小为1024字节;
-l或–local:仅显示本地端的文件系统;
-m或–megabytes:指定区块大小为1048576字节;
–no-sync:在取得磁盘使用信息前,不要执行sync指令,此为预设值;
-P或–portability:使用POSIX的输出格式;
–sync:在取得磁盘使用信息前,先执行sync指令;
-t<文件系统类型>或–type=<文件系统类型>:仅显示指定文件系统类型的磁盘信息;
-T或–print-type:显示文件系统的类型;
-x<文件系统类型>或–exclude-type=<文件系统类型>:不要显示指定文件系统类型的磁盘信息;
–help:显示帮助;
–version:显示版本信息。
-a或--all: 显示所有连线中的Socket;
-A<网络类型>或--<网络类型>: 列出该网络类型连线中的相关地址;
-c或--continuous: 持续列出网络状态;
-C或--cache: 显示路由器配置的快取信息;
-e或--extend: 显示网络其他相关信息;
-F或--fib: 显示FIB;
-g或--groups: 显示多重广播功能群组组员名单;
-h或--help: 在线帮助;
-i或--interfaces: 显示网络界面信息表单;
-l或--listening: 显示监控中的服务器的Socket;
-M或--masquerade: 显示伪装的网络连线;
-n或--numeric: 直接使用ip地址,而不通过DNS(能加快速度)
-N或--netlink或--symbolic 显示网络硬件外围设备的符号连接名称;
-o或--timers: 显示计时器;
-p或--programs: 显示正在使用Socket的程序识别码和程序名称;
-r或--route: 显示Routing Table;
-s或--statistice: 显示网络工作信息统计表;
-t或--tcp: 显示TCP传输协议的连线状况;
-u或--udp: 显示UDP传输协议的连线状况;
-v或--verbose: 显示指令执行过程;
-V或--version: 显示版本信息;
-w或--raw: 显示RAW传输协议的连线状况;
-x或--unix: 此参数的效果和指定"-A unix"参数相同;
--ip或--inet: 此参数的效果和指定"-A inet"参数相同。
netstat -a # 列出所有端口
netstat -at # 列出所有TCP端口
netstat -au # 列出所有UDP端口
netstat -ax # 列出所有unix端口
netstat -atnlp # 直接使用ip地址列出所有处理监听状态的TCP端口,且加上程序名
netstat -s # 显示所有端口的统计信息
netstat -st # 显示所有TCP的统计信息
netstat -su # 显示所有UDP的统计信息
netstat -r # 显示所有端口的统计信息
netstat -rn # 显示所有TCP的统计信息
Destination:目标网络或者主机。
Gateway:网关地址,如果没有设置则为*。
Genmask:目标网络掩码;如果默认路由则用"0.0.0.0"。
Flags标志说明:
U Up表示此路由当前为启动状态
H Host,表示此网关为一主机
G Gateway,表示此网关为一路由器
R Reinstate Route,使用动态路由重新初始化的路由
D Dynamically,此路由是动态性地写入
M Modified,此路由是由路由守护程序或导向器动态修改
! 表示此路由当前为关闭状态
Iface:对于这个路由,数据包将要发送到那个接口(网卡)
TCP & UDP与unix不同
Proto:协议名(tcp协议还是udp协议)
recv-Q:网络接收队列
send-Q:网路发送队列
Local Address 监听地址
如果是0.0.0.0打头, 则监听的是所有地址
Foreign Address 与本机端口通信的外部socket
显示规则与Local Address相同
State 链路状态
总共有12种, 前11种对应TCP握手挥手的几个状态:
这个直接看之前的实操
unix name
用于显示电脑以及操作系统的相关信息
-a或--all 显示全部的信息。
-m或--machine 显示电脑类型。
-n或--nodename 显示在网络上的主机名称。
-r或--release 显示操作系统的发行编号。
-s或--sysname 显示操作系统名称。
-v 显示操作系统的版本。
--help 显示帮助。
--version 显示版本信息。
uptime 命令告诉你系统启动up了(运行了)多长时间
几个参数
-p, --pretty 人性化显示
-h, --help 显示帮助
-s, --since system up since
-V, --version output version information and exit
grep常用的文本查找工具
支持正则表达式, 直接使用即可, 如下例子
查找当前目录中的文件
find . -type f | grep ".*log"