人生乃是一面镜子。在镜子里认识自己,我要称之为头等大事,哪怕随后就离开人世。!——尼采
简介
这里说明,这篇文章是我学习Fly_鹏程万里大神linux常用命令的学习笔记。
vi,vim使用
:w 123.txt //保存为123.txt
A //当前行末尾添加文本
I //当前行开头添加文本
O //当前行上面新建一行
o //当前行下面新建一行
R //替换当前光标位置及后面若干文本
光标移动 HJKL
x //删除当前字符
nx //删除从光标开始的n个字符
dd //删除当前行
ndd //向下删除当前行在内的n行
u //撤销上一步操作
:/123 //向下搜索123字符串
:?123 //向上搜索123字符串
n //向下搜索前一个搜索动作
N //向上搜索前一个搜索动作
n+ //向下跳n行
n- //向上跳n行
nG //跳到行号为n的行
G //跳到文件底部
:set nu //显示行号
:set nonu //取消显示行号
yy //将当前行复制到缓存区
nyy //将当前行向下n行复制到缓冲区
p //粘贴剪切板里的内容在光标后
P //粘贴剪切板里的内容在光标前
:s/old/new //用new替换行中首次出现的old
:s/old/new/g //用new替换行中所有的old
:n,m s/old/new/g //用new替换n到m行中所有的old
:%s/old/new // 用new替换当前文件中所有的old
:e 234.txt //编辑文件名为234.txt的文件
命令使用
chmod命令
-c 当发生改变时,报告处理信息
-f 错误信息不输出
-R 处理指定目录以及其子目录下的所有文件
-v 运行时显示详细处理信息
r 读权限,用数字4表示
w 写权限,用数字2表示
x 执行权限,用数字1表示
- 删除权限,用数字0表示
s 特殊权限
u 目录或者文件的当前的用户
g 目录或者文件的当前的群组
o 除了目录或者文件的当前用户或群组之外的用户或者群组
a 所有的用户及群组
1.比如我们搭建一个网站的时候,网站的安装脚本提示对某个文件没有可执行的权限,然后我们要给这个指定的文件所有用户组增加可执行的权限
chmod a+x database.php
2.或者后来我们发现是apache这个用户组没有可执行权限,为了安全考虑,其他用户组没必要具有可执行权限,我们可以这样操作
chmod ug+w,o-x database.php
3.或者我们有一天发现了某个文件夹内的文件都需要一个可写的权限,比如缓存目录,我们可以这样为整个目录增加权限
chmod -R u+w cache/
ln:为某一个文件在另外一个位置建立一个同步的链接
-f 强制执行
-s 软链接(符号链接)
1.比如我们自己写了一个脚本在/home/code/scp_key.sh上,但是我们想在bash中输入scp_key时候就执行这个脚本,我们可以把这个路径加入到PATH中去,或者这样
ln -s /home/code/scp_key.sh /usr/bin/scp_key
shell使用
通配符
“*”----代表任意長度字符串
“?”----代表任何单个字符
“[]”----指定匹配字符串范围,例如[c-f]*
在Shell中有三种:单引号(')、双引号(")、反引号(·)
单引号:引起来的字符都作为普通字符出现。
双引号:作用与单引号类似,三种特殊字符不会被忽略“$”、“\”、“·”
反引号:引起来的字串被Shell解释为命令行
linux命令
mv -l nginx.conf /etc/nginx/nginx.conf //创建软连接,不复制
cp -R /opt/php7 /usr/bin/php7 //复制整个目录
pwd //查看完整路径
cat -n 123.txt //带行号输出,空白行也编号
cat -b 123.txt //带行号输出,空白行不编号
cat -s 123.txt //遇到连续两行以上的空白用一行代替。
cat -n 123.txt > 234.txt //把123.txt内容加上行号复制到234.txt中, > 覆盖 >> 不覆盖,在末尾增加
cat /dev/null > /etc/test.txt //清空test.txt文档内容。
head & tail
-q 隐藏文件名
-v 显示文件名
-c 显示字节数
-n 显示的行数
-f 循环读取(tail专用): 会一直循环输出这个文件的内容,即使有新的内容进来,也可以马上就显示在屏幕上
more:一頁一頁的显示文件在屏幕上
命令的常用参数选项说明:
+n 从笫n行开始显示
-n 定义屏幕大小为n行
+/pattern 在每个档案显示前搜寻该字串(pattern),然后从该字串前两行之后开始显示
-c 从顶部清屏,然后显示
-d 禁用响铃功能
-l 忽略Ctrl+l(换页)字符
-p 通过清除窗口而不是滚屏来对文件进行换页,与-c选项相似
-s 把连续的多个空行显示为一行
-u 把文件内容中的下画线去掉
ls -il | more
sort排序:帮我们依据不同的数据类型进行排序。
命令的常用参数选项说明:
-b 忽略每行前面开始出的空格字符
-c 检查文件是否已经按照顺序排序
-f 排序时,忽略大小写字母
-M 将前面3个字母依照月份的缩写进行排序
-n 依照数值的大小排序
-o<输出文件> 将排序后的结果存入指定的文件
-r 以相反的顺序来排序
-t<分隔字符> 指定排序时所用的栏位分隔字符
-k 选择以哪个区间进行排序
-C 会检查文件是否已排好序,如果乱序,不输出内容,仅返回1
-M 会以月份来排序,比如JAN小于FEB等等
paste:用于合并文件的列,将两个文件以列对列的方式存储在新文件中
-d 指定分隔符
例如:paste username.txt password.txt >> final.txt
wc:用来统计行和字符的
-l 统计行数
-w 统计字数
-c 统计字节数
df:查看系统空间的使用情况
ps:用于查询当前运行的进程信息。
ps -ef 查看当前正在运行的进程
ps -ef | grep nginx 查看运行着nginx的进程
top:命令显示各进程的信息,包括内存和cpu占用情况
top 直接top就行
lsof:列出当前系统打开文件
命令的常用参数选项说明
<filename> 显示开启文件<filename>的进程
-c <name> 显示<name>进程现在打开的文件
-c -p PID 列出进程号为PID的进程所打开的文件
lsof -g GID 显示归属GID的进程情况
+d PATH 显示目录下被进程开启的文件
+D PATH 同上,但是会搜索目录下的目录,时间较长
-d NUM 显示使用fd为NUM的进程
-i 用以显示符合条件的进程情况
-i [4/6] [protocol][@hostname|hostaddr][:service|port]
4/6 IPv4 or IPv6
protocol TCP or UDP
hostname Internet host name
hostaddr IP地址
service /etc/service中的service name (可以不止一个)
port 端口号 (可以不止一个)
1、恢复删除的文件,当你的计算机被黑客攻击之后,黑客离开之前清除了所有的日志,怎么办?
例如文件/var/log/messages
首先使用lsof来查看当前是否有进程打开/var/logmessages文件
# lsof | grep /var/log/messages
因此我们可以在/proc/1283/fd/2(fd下的每个以数字命名的文件表示进程对应的文件描述符)中查看相应的信息,如下
# head -n 10 /proc/1283/fd/2
然后我们可以这样恢复
cat /proc/1283/fd/2 > /var/log/messages
2.比如我们服务器被黑客植入了一个挖矿的木马,假设这个木马的进程号是30297我们怎么去找到这个木马的源文件在哪里,可以这样
lsof -p 30297
我们分析这个文件发现了一个恶意域名,为了确定系统中是否还有隐藏木马,我们可以这样查看有哪些进程链接到了这个域名
lsof -i UDP@213162837.yyt.com:1230
或者tcp
lsof -i TCP@213162837.yyt.com:1230 -r
kill:用来终止指定进程运行(假设bd为病毒名,pid=33888)
ps -ef | grep bd
kill 33888 有时候无法杀死,可以使用
kill -9 33888
netstat:用于显示各种网络信息
netstat -a 列出所有端口
netstat -at 列出所有tcp端口
netstat -au 列出所有udp端口
netstat -l 只显示监听中的端口
netstat -lt 只显示监听中的tcp端口
netstat -lu 只显示监听中的udp端口
netstat -apn | grep 8080 查找8080端口上监听的端口是哪个。
wegt:文件下载工具
wegt url 直接下载
wegt -0 new_name url 下载并重命名
wegt --limit-rate 300k url 下载时限制速度
wegt -b url 后台下载
Traceroute:路由追踪
nslookup:查找域名解析