find path -option [-print] [-exec -ok command]{}\
-option
-name 通过名字查找
-user 通过用户查找
-perm 通过权限查找
-prune 忽略某个目录
-print:find命令将匹配的文件输出到标准输出。
-exec:find命令对匹配的文件执行该参数所给出的shell命令
-ok:和-exec的作用相同,但会给予提示。
// 示例:
find -name test.txt 在当前目录查找文件名是text.txt的文件
find /data -name text* 在data根目录下查找文件名以text开头的文件
find /data -empty 查找大小为0的文件或空目录
find /data -mtime -2 查找最后两天访问文件
fnid /data -mmin -10 查找最后十分钟访问文件
find
通配符号
*:匹配任意长度的任意字符;
?:匹配任意单个字符;
[ ]:匹配指定集合内的任意单个字符;
[a-z], [A-Z]:不区分字符大小写;
[0-9]
[a-z0-9]
[[:upper:]]:所有大写字母;
[[:lower:]]:所有小写字母;
[[:digit:]]:所有的数字;
[[:alpha:]]:所有字母;
[[:alnum:]]:所有字母和数字;
[[:space:]]:空白字符;
[[:punct:]]:标点符号;
[^ ]:匹配指定集合外的任意单个字符;
1.locate类似find -name,但是快很多
原因:不搜索具体目录,搜索数据库:/var/lib/locatedb
2.该数据库,系统自动创建,每天更新一次,所以查询不到最新的数据;
3.可以使用:updatedb来手动更新数据库
示例:
locate /etc/sh 查询/etc目录下sh开头文件
locate /data/*.md 查询/data目录下扩展名是md的文件
locate /data/*mark*.md 查询/data目录下,扩展名是md且名称含有mark的文件
//添加header
wget --header='X-Requested-With:XMLHttpRequest' http://liangzai.pub
//设置代理
wget -e "http_proxy=http://10.11.4.4:3128/" http://liangzai.pub
curl 'http://liangzai.pub'
curl -o a.txt http://liangzai.pub //将curl的内容保存到 a.txt文件中(或下载文件)
curl -O http://liangzai.pub // 默认文件名
curl http://liangzai.pub > a.txt //将curl的内容重定向到 a.txt文件中
curl -x 127.0.0.1:8118 http://httpbin.org/ip // 设置代理ip
curl --socks5 127.0.0.1:8080 http://httpbin.org/ip // 设置socks5代理ip
//本地至远程
scp local_file remote_username@remote_ip:remote_folder
//远程至本地
scp remote_username@remote_ip:remote_file local_folder
scp /data/a.txt root@1.1.0.1:/data/
-v 显示进度 . 可以用来查看连接 , 认证 , 或是配置错误 .
-C 使能压缩选项 .
-P 选择端口 . 注意 -p 已经被 rcp 使用 .
-4 强行使用 IPV4 地址 .
-6 强行使用 IPV6 地址 .
-r 复制目录,递归
1.如果远程服务器防火墙有特殊限制,scp便要走特殊端口,具体端口视情况而定:
#scp -p 4588 remote@www.abc.com:/usr/local/sin.sh /home/administrator
2.使用scp要注意所使用的用户是否具有可读取远程服务器相应文件的权限。
less test.log
空格[PgDn]:向下翻页
PgUp:向上翻页
b:往回翻页,只对文件有效,对管道无效
=:显示行号
q:离开
/:向下查询
?:向上查询
n:重复前一个查询
N:反复重复前一个查询
后台运行(默认日志输出到nohup.out里):
nohup ./startup.sh &
只输出错误信息到日志文件
nohup ./startup.sh 1>/dev/null 2>log &
什么信息也不要
nohup ./startup.sh 1>/dev/null 2>&1 &
关于Linux的3种重定向
0:表示标准输入
1:标准输出,在一般使用时,默认的是标准输出
2:标准错误信息输出
a.将某个程序的错误信息输出到log文件 中:./program 2>log。
这样标准输出还是在屏幕上,但是错误信息会输出到log文件中。
b.0,1,2之间的重定向:
2>&1:将错误信息重定向到标准输出。
关于/dev/null文件
Linux下还有一个特殊的文件/dev/null,像一个无底洞,所有重定向到它的信息都会消失得无影无踪。
ps [options][--help]:显示瞬间进程(process)的动态信息
-A 列出所有进程
-a 显示现行终端机下的所有进程,包括其他用户的进程;
-e 类似-A
-u 以用户为主的进程状态 ;
-au 显示较详细的资讯
-aux 显示所有包含其他使用者的进程
ps -N 显示所有的程序,除了执行ps指令终端机下的程序之外
ps -A 显示所有程序
ps -aux | grep "java" 过滤进程
ps -ef | grep "java" 过滤进程
进程5种状态:
D 不可中断 uninterruptible sleep (usually IO)
R 运行 runnable (on run queue)
S 中断 sleeping
T 停止 traced or stopped
Z 僵死 a defunct (”zombie”) process
netstat -an | grep "端口号"
-a (all)显示所有选项,默认不显示LISTEN相关
-t (tcp)仅显示tcp相关选项
-u (udp)仅显示udp相关选项
-n 拒绝显示别名,能显示数字的全部转化成数字。
-l 仅列出有在 Listen (监听) 的服務状态
-p 显示建立相关链接的程序名
-r 显示路由信息,路由表
-e 显示扩展信息,例如uid等
-s 按各个协议进行统计
-c 每隔一个固定时间,执行该netstat命令。
提示:LISTEN和LISTENING的状态只有用-a或者-l才能看到
1. netstat -a 列出所有端口 (包括监听和未监听的)
netstat -at 列出所有 tcp 端口
netstat -au 列出所有 udp 端口
2. 列出所有处于监听状态的 Sockets
netstat -l 只显示监听端口
netstat -lt 只列出所有监听 tcp 端口
netstat -lu 只列出所有监听 udp 端口
lsof -i | grep "端口号"通过查询网络堆栈列举正在监听网络的端口
alias 显示所有别名
alias rm='rm -i'
alias cp='cp -ir'
alias mv='mv -i'
alias rmf='rm -Rf'
alias ns='netstat -tunlp'
alias tl='tail -f -n 100'
alias rc='/root/bin/redis-cli'
alias egrep='egrep --color=auto'
alias fgrep='fgrep --color=auto'
alias grep='grep --color=auto'
alias l='ls -CF'
alias la='ls -A'
alias ll='ls -lahF'
alias ls='ls --color=auto'
alias pg='ps -aux | grep -v grep | grep '
alias vi='vim'
alias scp='scp -r'
du 选项 目录/文件 目录/文件
-b或显示目录或文件大小时,以byte为单位
-k或以KB(1024bytes)为单位输出。
-m或以MB为单位输出。
-a所有
-c除了显示个别目录或文件的大小外,同时也显示所有目录或文件的总和
-h以K,M,G为单位,提高信息的可读性。
-s仅显示总计,只列出最后加总的值。
-S显示目录的大小时,并不包含其子目录的大小。
#降序排序查看
du -h /data/ | sort -hr | more #分页查看
du -h /data/ | sort -hr | head -n 10 #只显示前10条
df 选项 文件
-a 全部文件系统列表
-h 方便阅读方式显示
-i 显示inode信息
-l 只显示本地文件系统
-k 区块为1024字节
-m 区块为1048576字节
-P 输出格式为POSIX
-T 文件系统类型
df -hl 查看所有磁盘使用状况
-n按字符串数值排序,与-g区别为不转为浮点数
-g按通用数值排序,支持科学计数法
-f忽略大小写,默认大小写字母不同
-t指定列的分割符
-r降序排序,默认为升序
-h使用易读性数字(例如: 2m 1G)
-u去除重复的行
-o将输出写入文件
sort num.txt -n
sort word.txt -o word.txt
watch[参数][命令]
-n 执行间隔时间,默认2秒
-d 高亮显示变化的区域。
-t 关闭watch命令在顶部的时间间隔,命令,当前时间的输出。
#每隔一秒高亮显示网络链接数的变化情况
watch -n 1 -d netstat -ant
#每隔一秒高亮显示http链接数的变化情况
watch -n 1 -d 'pstree|grep http'
#2秒一次输出系统的平均负载
watch 'cat /proc/loadavg'
#连续监视内存使用状况
watch -d free -h
wc [选项] 文件...
-c 统计字节数。
-l 统计行数。
-m 统计字符数。这个标志不能与 -c 标志一起使用。
-w 统计字数。一个字被定义为由空白、跳格或换行字符分隔的字符串。
-L 打印最长行的长度。
#字数统计
cat a.txt | wc -m
ssh 10.10.89.113 -p 端口 -l 用户名
sudo apt-get install openssh-server 安装
ps -e | grep ssh 如果看到sshd那说明ssh-server已经启动
ssh-server 配置文件位于 /etc/ssh/sshd_config
/etc/init.d/ssh restart 启动
service sshd start 启动
service sshd restart 重启
netstat -tlp | grep ssh 监听是否启动
VMbox ubuntu 共享文件夹
sudo mount –t vboxsf share /data 注意:/data挂载后路径,share挂载文件夹名字
启动机器自动挂载:
sudo gedit /etc/fstab
share /data vboxsf rw,gid=100,uid=1000,auto 0 0
curl members.3322.org/dyndns/getip
#启动nginx:
nginx -c /etc/nginx/nginx.conf
#重新加载配置|重启|停止|退出 nginx
nginx -s reload|reopen|stop|quit
#检查配置文件是否正确
nginx -t
#同上
service nginx start|reload|restart|stop|status
squid -k parse #检查squid.conf是否有误
squid -s #后台运行
squid -k shutdown #关闭
squid -z #初始化缓存空间,缓存目录为squid.conf配置的cache目录
grep [options]
-c:只输出匹配行的计数。
-I:不区分大 小写(只适用于单字符)。
-h:查询多文件时不显示文件名。
-l:查询多文件时只输出包含匹配字符的文件名。
-L:和-l相反
-n:显示匹配行及 行号。
-s:不显示不存在或无匹配文本的错误信息。
-v:显示不包含匹配文本的所有行。
-o:只显示匹配的内容
-e:匹配多个词,如:grep -e 'k1' -e 'k2' test.log
-a:以文本文件方式搜索
-w:只匹配整个单词,而不是单词的一部分
-B:显示匹配行前多少行内容
-A:显示匹配行后多少行内容
-C:显示匹配行前后多少行内容
-E:使用扩展正则表达式,和egrep功能相同
-F:不使用正则表达式,和fgrep功能相同,速度更快
zgrep 用法和grep一致,不过可以搜索压缩文件,如zgrep 'html' xx.gz
xargs能够捕获一个命令的输出,然后传递给另外一个命令
-0:将特殊字符当成一般字符处理
-p:运行每个命令是,会询问使用者的意思
-n:后面接次数,每次commend命令运行时,传递几个参数。
-e:后面接flag,即碰到flag终止
-t:先打印命令再执行
#删除所有data目录下.log文件
find /data -name '*.log' | xargs rm -rf
#读取urllist文件,并一次一个通过wget获取
cat url-list.txt | xargs -n 1 wget –c
#查找data目录下所有图片,并压缩
find /data -name *.jpg -type f -print | xargs tar -cvzf images.tar.gz
exec和xargs有类似功能:
exec每处理一个文件或目录,都启动一次命令,效率不好
xargs是处理完所有文件或目录后批量执行命令
xargs 不能操作文件名有空格的问题
exec格式麻烦,必须用{}做文件的代位符,必须用" \;"作为命令的结束符,书写不变
-ok和-exec的作用、格式一样,但是更安全,会给出提示让用户选择是否执行;
示例:寻找passwd文件,并查找文件内是否有root关键字
find /etc/ -name "passwd" -exec grep "root" {} \;
find /etc/ -name "passwd" | xargs grep "root"
格式:tar 选项 文件目录
功能:对文件目录进行打包
选项:
-c建立新的归档文件
-r向归档文件末尾追加文件
-x从归档文件中解压出文件
-O将文件解压缩到标准输出
-v处理过程中输出相关信息
-f对普通文件操作
-z调用gzip来压缩归档文件,与-x联用是调用gzip完成解压缩
-Z调用compress来压缩归档文件,与-x联用时调用compress完成解压缩
示例:
tar czvf this.tar.gz ./*.txt //将当前目录所有txt文件打包
tar xzvf this.tar.gz ./ //将this.tar.gz解压到当前目录
.tar:
解压:tar xvf name.tar 解压至目录
打包:tar cvf name.tar 被打包目录或文件
总结
1、*.tar 用 tar –xvf 解压
2、*.gz 用 gzip -d或者gunzip 解压
3、*.tar.gz和*.tgz 用 tar –xzf 解压
4、*.bz2 用 bzip2 -d或者用bunzip2 解压
5、*.tar.bz2用tar –jxvf 解压
6、*.Z 用 uncompress 解压
7、*.tar.Z 用tar –xZf 解压
8、*.rar 用 unrar x解压;;unrar e 是解压所有文件至同一个目录
9、*.zip 用 unzip 解压
zip -r ./* a.zip:将当前目录下所有文件打包为a.zip
unzip a.zip -d 解压至目录
异常:tar: xxx :Not found in archive
[使用-C参数,代表:创建新的档案文件]
解决:tar -xzvf this.tar.gz -C /data/temp/
crontab [-u username] [-e|-l|-r]
-u 只有root有此权限,为其他用户创建/移除任务,如:crontab -u crawler -l(查看crawler用户定时任务)
-e 编辑crontab定时任务
-l 查看crontab定时任务
-r 移除所有定时任务
定时格式:
分 时 日 月 周 脚本命令
分:0-59
时:0-23
日:1-31
月:1-12
周:0-7(0和7都是周日)
* 任何时候
, 选择多个时间 1,2,3 * * * * command(每1,2,3分钟的时候执行一次)
- 选择区间 00 7-10 * * * command(每7点到10点整执行一次)
/n 间隔执行 */5 * * * 6,7 command(周六周日的每5分钟执行一次)
stat 显示指定文件的详细信息,比ls更详细
-f 不显示文件本身信息,显示文件所在系统信息
-L 显示符号链接
-t 只显示摘要信息
-d或-F或——directory:建立目录的硬连接(默认);
-s或——symbolic:对源文件建立符号连接(类似windows快捷方式);
-v或——verbose:显示指令执行过程;
-i或——interactive:覆盖既有文件之前先询问用户;
-f或——force:强行建立文件或目录的连接,不论文件或目录是否存在;
硬链接:
硬连接允许一个文件拥有多个有效路径名,指向同一个索引节点,防止文件被误删,文件连接数为0时,才会被物理删除;
只能对文件创建硬链接,不能对目录创建硬链接,不会跨文件系统,修改时间一致;
硬链接文件和源文件具有相同的inode号,可以利用find的-inum参数和-samefile参数来查找。
软连接:
删除源文件或目录,只删除了数据,不会删除软链接。一旦以同样文件名创建了源文件,链接将继续指向该文件的新数据;
软链接的大小是其链接文件的路径名中的字节数,文件保存源文件路径信息;
根据源文件查找软连接
find /data -type l -exec ls -l {} \; | grep "源文件名称"
根据源文件查找硬链接
1. find /data -inum 1448151
(1448151是Inode号码,可以用stat 文件名 查看)
2. find /data/ -samefile /data/a.txt
(查找和/data/a.txt相同Inode号的文件,即其硬链接)
查找/data目录下所有软连接
find /data -type l -exec ls -l {} \;
find /data -type l | xargs ls -l
命令:
ln -s /data/storm-0.9.6 /data/storm //建立软连接storm
注意:
删除软连接: rm -rf /data/storm
错误删除软连接:rm -rf /data/storm/ (删除的是/data/storm/路径下所有文件,非软连接)
覆盖软连接: ln -sf /data/storm-1.2.1 /data/storm
Tab: 文件名、路径自动补全
Ctrl+A:将光标移动到命令行的开始处。
Ctrl+E:将光标移动到命行令的结尾处。
Ctrl+U:删除行首到光标出的字符。
Ctrl+C:命令中断。
Ctrl+S:终端静止、发呆。
Ctrl+Q:退出终端静止。
监控每个进程的磁盘IO使用情况
iotop(选项)
-o:只显示有io操作的进程
-b:批量显示,无交互,主要用作记录到文件。
-n NUM:显示NUM次,主要用于非交互式模式。
-d SEC:间隔SEC秒显示一次。
-p PID:监控的进程pid。
-u USER:监控的进程用户。
快捷键
左右箭头:改变排序方式,默认是按IO排序。
r:改变排序顺序。
o:只显示有IO输出的进程。
p:进程/线程的显示方式的切换。
a:显示累积使用量。
q:退出。
第一行:类似uptime
第二行:任务(进程)
running:运行
sleeping:休眠
stopped:停止
zombie:僵死
第三行:cpu状态信息
us — 用户空间占用CPU的百分比。
sy — 内核空间占用CPU的百分比。
ni — 改变过优先级的进程占用CPU的百分比
id — 空闲CPU百分比
wa — IO等待占用CPU的百分比
hi — 硬中断(Hardware IRQ)占用CPU的百分比
si — 软中断(Software Interrupts)占用CPU的百分比
第四行:内存状态,同free
total — 物理内存总量
used — 使用中的内存总量
free — 空闲内存总量
buffers — 缓存的内存量
第五行:swap交换区信息
total — 交换区总量
used — 使用的交换区总量
free — 空闲交换区总量
cached — 缓冲的交换区总量
其他:进程(任务)状态监控
PID — 进程id
USER — 进程所有者
PR — 进程优先级
NI — nice值。负值表示高优先级,正值表示低优先级
VIRT — 进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES
RES — 进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA
SHR — 共享内存大小,单位kb
S — 进程状态。D=不可中断的睡眠状态 R=运行 S=睡眠 T=跟踪/停止 Z=僵尸进程
%CPU — 上次更新到现在的CPU时间占用百分比
%MEM — 进程使用的物理内存百分比
TIME+ — 进程使用的CPU时间总计,单位1/100秒
COMMAND — 进程名称(命令名/命令行)
交互命令:
1 显示所有CPU的状态(CPU个数)
i 忽略闲置和僵死进程。
d 设置刷新时间
n 设置最大显示任务数量
q 退出
h 帮助
M 根据驻留内存大小进行排序
P 根据CPU使用百分比大小进行排序
T 根据时间/累计时间进行排序
A 切换交替显示模式
Def(默认字段组)
Job(任务字段组)
Mem(内存字段组)
Usr(用户字段组)
参 数:
-b 以Byte为单位显示内存使用情况。
-k 以KB为单位显示内存使用情况。
-m 以MB为单位显示内存使用情况。
-h 以比较人性化的方式显示内存使用情况。
-o 不显示缓冲区调节列。
-s <间隔秒数> 持续观察内存使用状况。
-t 显示内存总和列。
-c 重复次数
> free -h
total used free shared buff/cache available
Mem: 992M 317M 86M 3.2M 588M 498M
Swap: 0B 0B 0B
total:去掉为硬件和操作系统保留的内存后剩余的内存总量。
userd:当前已使用的内存总量。
free:空闲的或可以使用的内存总量
shared:共享内存大小,主要用于进程间通信
buff(buffers):主要用于块设备数据缓冲,例如记录文件系统的metadata(目录、权限等等信息)。
cache:主要用于文件内容缓冲
available:可以使用的内存总量
一般情况下:CPU比内存快100倍,内存比磁盘快十万倍。
cached用于协调CPU和内存见速度不匹配;buffer用于协调内存与磁盘速度不匹配。
对linux下程序来说,buffer/cached是等于可用的,其主要作用是提高文件读取性能,当程序需要内存时,buffer/cached会被回收;
所以可用内存=free memory + buffers + cached
> uptime
15:04:59 up 33 days, 20:59, 3 users, load average: 0.00, 0.00, 0.00
启动时间;启动了多少时间;当前多少用户;1、5、15分钟CPU平均负载
load average平均负载安全值为:N*0.7 (N为cpu核心数)
查看cpu核数等
1.grep 'model name' /proc/cpuinfo |wc -l
2.top 下按1,会显示每个CPU的使用状况,即可以看到CPU核数
cat /proc/cpuinfo
siblings:单个cpu逻辑物理核数
cpu cores:该逻辑核所处cpu的物理核数
cpu family:cpu产品系列代号
cpu MHz:cpu的实际使用主频
cache size:cpu二级缓存大小
...
● nethogs: 按进程查看流量占用
● iptraf: 按连接/端口查看流量
● ifstat: 按设备查看流量
● ethtool: 诊断工具
● tcpdump: 抓包工具
● ss: 连接查看工具
● 其他: dstat, slurm, nload, bmon,iftop
cd - #返回上次目录
arch #显示机器处理器架构
echo $PATH #显示环境变量
rz -y #上传文件
sz 文件 #下载文件