watch
watch是一个非常实用的命令,基本所有的Linux发行版都带有这个小工具,如同名字一样,watch可以帮你监测一个命令的运行结果,省得你一遍遍的手动运行。在Linux下,watch是周期性的执行下个程序,并全屏显示执行结果。你可以拿他来监测你想要的一切命令的结果变化,比如 tail 一个 log 文件,ls 监测某个文件的大小变化,看你的想象力了!
1.命令格式:
watch[参数][命令]
2.命令功能:
可以将命令的输出结果输出到标准输出设备,多用于周期性执行命令/定时执行命令
3.命令参数:
-n或–interval watch缺省每2秒运行一下程序,可以用-n或-interval来指定间隔的时间。
-d或–differences 用-d或–differences 选项watch 会高亮显示变化的区域。 而-d=cumulative选项会把变动过的地方(不管最近的那次有没有变动)都高亮显示出来。
-t 或-no-title 会关闭watch命令在顶部的时间间隔,命令,当前时间的输出。
-h, --help 查看帮助文档
4.使用实例:
实例1:
命令:每隔一秒高亮显示网络链接数的变化情况
watch -n 1 -d netstat -ant
说明:
其它操作:
切换终端: Ctrl+x
退出watch:Ctrl+g
实例2:每隔一秒高亮显示http链接数的变化情况
命令:
watch -n 1 -d ‘pstree|grep http’
说明:
每隔一秒高亮显示http链接数的变化情况。 后面接的命令若带有管道符,需要加’'将命令区域归整。
实例3:实时查看模拟攻击客户机建立起来的连接数
命令:
watch ‘netstat -an | grep:21 | \ grep<模拟攻击客户机的IP>| wc -l’
说明:
实例4:监测当前目录中 scf’ 的文件的变化
命令:
watch -d ‘ls -l|grep scf’
实例5:10秒一次输出系统的平均负载
命令:
watch -n 10 ‘cat /proc/loadavg’
strace
1.比如我们要跟踪一条mount命令执行过程中有哪些堆栈的调用:
mount -t nfs4 -o rw,hard,intr,timeo=600,actimeo=0,proto=tcp,rsize=262144,wsize=262144 192.168.8.164:/app-temp/recovery/151 /tmp/flashbackup_tmp/210 2>&1
可以这样做:
strace -o result.txt mount -t nfs4 -o rw,hard,intr,timeo=600,actimeo=0,proto=tcp,rsize=262144,wsize=262144 192.168.8.164:/app-temp/recovery/151 /tmp/flashbackup_tmp/210 2>&1
2.指定进程号pid进行追踪:
strace -o output.txt -T -tt -e strace=all -p pid(待追踪进程的进程号)
-f 可以跟踪所有由 fork 产生的子进程(vfork不被跟踪)
-F 会尝试跟踪 vfork 的调用
-ff 如果有 -o $file,则所有进程的跟踪结果会输出到 $file.$pid 中,其中 $pid 为各进程的进程号
-t 输出时加上时间信息
-tt 输出时加上时间信息(微秒级)
-T 输出加上每次系统调用消耗的时间
-v 输出完整的系统调用信息(默认部分频繁使用的调用不输出)
ln
ln -s /home/kingbase/archive_log/ wal#wal为软连接连接名
mount
#例如挂载.iso文件
mount /root/xxx.iso -o loop /mnt/
umount /root/xxx.iso
ps -aux 和ps -ef
ps -ef#表示查看全格式的全部进程。
-e 显示所有进程
-f 全格式
字段含义如下:
UID PID PPID C STIME TTY TIME CMD
root 24410 1 0 11:36 ? 00:00:03 python /flashclient/dbfensvr.py start
UID :程序被该 UID 所拥有
PID :就是这个程序的 ID
PPID :则是其上级父程序的ID
C :CPU使用的资源百分比
STIME :系统启动时间
TTY :登入者的终端机位置
TIME :使用掉的CPU时间。
CMD :所下达的是什么指令
ps -aux
ps -aux 是最常用的 BSD 风格选项组合,其中的 a 简单的说,表示所有关联到终端的进程,如果同时使用 x 则代表所有进程;u 表示列出进程的用户。
创建一个100M的空文件
dd if=/dev/zero of=hello.txt bs=100M count=1
- /dev/null,外号叫无底洞,你可以向它输出任何数据,它通吃,并且不会撑着!
- /dev/zero,是一个输入设备,你可你用它来初始化文件。
- /dev/null——它是空设备,也称为位桶(bit
bucket)。任何写入它的输出都会被抛弃。如果不想让消息以标准输出显示或写入文件,那么可以将消息重定向到位桶。 - /dev/zero——该设备无穷尽地提供0,可以使用任何你需要的数目——设备提供的要多的多。他可以用于向设备或文件写入字符串0。
dd if=“inputFileName” of=”outFileName” bs=”块大小” count=“块个数”
块大小可以使用各种计量单位
字节(1B) – c 字(2B) – w
块(512B) – b 千字节(1024B) – k
兆字节(1024K) – M 吉字节(1024M) – G
Linux清除cache
echo 3 > /proc/sys/vm/drop_caches
补充:
# 释放缓存区内存的方法
1)清理pagecache(页面缓存)
# echo 1 > /proc/sys/vm/drop_caches 或者 # sysctl -w vm.drop_caches=1
2)清理dentries(目录缓存)和inodes
# echo 2 > /proc/sys/vm/drop_caches 或者 # sysctl -w vm.drop_caches=2
3)清理pagecache、dentries和inodes
# echo 3 > /proc/sys/vm/drop_caches 或者 # sysctl -w vm.drop_caches=3
注:上面三种方式都是临时释放缓存的方法,要想永久释放缓存,需要在/etc/sysctl.conf文件中配置:vm.drop_caches=1/2/3,然后sysctl -p生效即可!
Linux截取某个文件指定行输出到指定新文件
head -100 oldfile > newfile #截取oldfile前100行到newfile
tail -100 oldfile > newfile
sed -n '100,200p' oldfile > newfile #截取oldfile中的100到200行到newfile中
Linux删除N天前的文件
find /u01/app/oracle/diag/rdbms/orcl/orcl/alert/ -type f -name '*.xml' -mtime +1 -exec rm {} \;
基本思路是,find找到相应的文件,然后执行某个命令。这里是找到N天前的文件,然后执行删除指令。
- -mtime: 指定文件的修改时间,以天为单位。+N是N天以前,-N是N天以内,N是第N天。另外有,-mmin按分钟为单位指定文件的修改时间。还另外可以另外的参数指定文件上次使用的时间等。
- -name ‘*.txt’: 指定查找的文件名的模式
- -type f: 指定查找的为文件,而非文件夹或文件链接等
查看当前目录占用空间大小
du -sh /u01/app/oracle/diag/rdbms/orcl/orcl/
添加用户、设置密码
1.useradd test
2.passwd test
3. 删除用户,只需使用一个简单的命令“userdel 用户名”即可。不过最好将它留在系统上的文件也删除掉,你可以使用“userdel -r 用户名”来实现这一目的。
grep查询文件类容
grep -r 关键字 文件所在的目录
Linux下有三个命令:ls、grep、wc。通过这三个命令的组合可以统计目录下文件及文件夹的个数。
- 统计当前目录下文件的个数(不包括目录)
ls -l | grep "^-" | wc -l
- 统计当前目录下文件的个数(包括子目录)
ls -lR| grep "^-" | wc -l
- 查看某目录下文件夹(目录)的个数(包括子目录)
ls -lR | grep "^d" | wc -l
- 查看某目录下文件夹(目录)的个数(不包括子目录)
ls -l | grep "^d"|wc -l
说明:
grep "^-" 过滤ls的输出信息,只保留一般文件,只保留目录是grep "^d"。
wc -l 统计输出信息的行数,统计结果就是输出信息的行数,一行信息对应一个文件,所以就是文件的个数。
这样就可以把图中的结果写入到x.txt,是覆盖写
临时和永久关闭Selinux
临时关闭:
[root@localhost ~]# getenforce
Enforcing
[root@localhost ~]# setenforce 0
[root@localhost ~]# getenforce
Permissive
永久关闭:
[root@localhost ~]# vim /etc/sysconfig/selinux
SELINUX=enforcing 改为 SELINUX=disabled
重启服务reboot
centos 查看防火墙状态
关闭防火墙
1) 永久性生效,重启后不会复原
开启: chkconfig iptables on
关闭: chkconfig iptables off
2) 即时生效,重启后复原
开启: service iptables start
关闭: service iptables stop
查看防火墙状态: service iptables status
CentOS 7默认使用的是firewall作为防火墙,使用iptables必须重新设置一下
1、直接关闭防火墙
systemctl stop firewalld.service #停止firewall
systemctl disable firewalld.service #禁止firewall开机启动
2、设置 iptables service
yum -y install iptables-services
如果要修改防火墙配置,如增加防火墙端口3306
vi /etc/sysconfig/iptables
增加规则
-A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT
保存退出后
systemctl restart iptables.service #重启防火墙使配置生效
systemctl enable iptables.service #设置防火墙开机启动
最后重启系统使设置生效即可。
systemctl start iptables.service #打开防火墙
systemctl stop iptables.service #关闭防火墙
zip 、tar
- zip
zip test.zip test.txt #添加压缩文件
zip test.zip test1.txt #移动文件到压缩包
zip -d test.zip test.txt #删除test.txt
zip -r test.zip ./* #压缩当前全部文件到test.zip
zip test2.zip test2/* #打包目录
zip test3.zip tests/* -x tests/ln.log #压缩目录,除了tests/ln.log
zip -r test.zip ./* -P 123 #设置密码(明文设置密码不太安全)
zip -r test.zip ./* -e #交互设置密码(安全)
#设置压缩比
#-0不压缩,-9最高压缩,默认为-6
zip test.zip test.txt -6
#常用命令选项
-d 从压缩文件内删除指定的文件。
-m 把文件移到压缩文件中。
-0-9 压缩比
-r 递归处理,所有文件和子目录一并处理。
-x<范本样式> 压缩时排除符合条件的文件。
-c 交互为每一个文件设置注释
-z 交互多行注释,英文句话.来表示结束
-e 交互设置密码
-P 直接设置密码
- tar
tar
-c: 建立压缩档案
-x:解压
-t:查看内容
-r:向压缩归档文件末尾追加文件
-u:更新原压缩包中的文件
这五个是独立的命令,压缩解压都要用到其中一个,可以和别的命令连用但只能用其中一个。下面的参数是根据需要在压缩或解压档案时可选的。
-z:有gzip属性的
-j:有bz2属性的
-Z:有compress属性的
-v:显示所有过程
-O:将文件解开到标准输出
下面的参数-f是必须的
-f: 使用档案名字,切记,这个参数是最后一个参数,后面只能接档案名。
# tar -cf all.tar *.jpg
这条命令是将所有.jpg的文件打成一个名为all.tar的包。-c是表示产生新的包,-f指定包的文件名。
# tar -rf all.tar *.gif
这条命令是将所有.gif的文件增加到all.tar的包里面去。-r是表示增加文件的意思。
# tar -uf all.tar logo.gif
这条命令是更新原来tar包all.tar中logo.gif文件,-u是表示更新文件的意思。
# tar -tf all.tar
这条命令是列出all.tar包中所有文件,-t是列出文件的意思
# tar -xf all.tar
这条命令是解出all.tar包中所有文件,-t是解开的意思
压缩
tar -cvf jpg.tar *.jpg //将目录里所有jpg文件打包成tar.jpg
tar -czf jpg.tar.gz *.jpg //将目录里所有jpg文件打包成jpg.tar后,并且将其用gzip压缩,生成一个gzip压缩过的包,命名为jpg.tar.gz
tar -cjf jpg.tar.bz2 *.jpg //将目录里所有jpg文件打包成jpg.tar后,并且将其用bzip2压缩,生成一个bzip2压缩过的包,命名为jpg.tar.bz2
tar -cZf jpg.tar.Z *.jpg //将目录里所有jpg文件打包成jpg.tar后,并且将其用compress压缩,生成一个umcompress压缩过的包,命名为jpg.tar.Z
rar a jpg.rar *.jpg //rar格式的压缩,需要先下载rar for linux
zip jpg.zip *.jpg //zip格式的压缩,需要先下载zip for linux
解压
tar -xvf file.tar //解压 tar包
tar -xzvf file.tar.gz //解压tar.gz
tar -xjvf file.tar.bz2 //解压 tar.bz2
tar -xZvf file.tar.Z //解压tar.Z
unrar e file.rar //解压rar
unzip file.zip //解压zip
总结
1、*.tar 用 tar -xvf 解压
2、*.gz 用 gzip -d或者gunzip 解压
3、*.tar.gz和*.tgz 用 tar -xzf 解压
4、*.bz2 用 bzip2 -d或者用bunzip2 解压
5、*.tar.bz2用tar -xjf 解压
6、*.Z 用 uncompress 解压
7、*.tar.Z 用tar -xZf 解压
8、*.rar 用 unrar e解压
9、*.zip 用 unzip 解压
测试端口可否连接telnet(window、Linux都有)
telnet 192.168.127.130 6379
telnet IP 端口
或者
telnet 域名 端口
netstat(window、Linux都有)
netstat -a #列出所有连接
netstat -at #列出所有tcp连接
netstat -au #列出所有udp连接(window无u)
netstat -nl|grep port #查询端口号是否占用
netstat -apn|grep server#查询程序占用端口
lsof
lsof -iTCP #仅显示TCP连接(同理可获得UDP连接)
lsof -i :22 #使用-i:port来显示与指定端口相关的网络信息
du查看目录大小
du -sh ./*
Linux下查看换行符是否有^M
cat -A xxxx
将文件a的所有者以及权限复制给文件b、file2、file3
chmod --reference=a b file2 file3