/ 城寒 / Linux - Basic Command

Linux - Basic Command

2018-02-09 posted in [各种]

早期整理的容易忘记的命令使用 基本上直接man或者现查都可以

iptables

# 显示
iptables -L -n
# 删除INPUT第七条
iptables -D INPUT 7
# 添加,指定源、目的IP的,任何协议的,都可以通过,可加子网掩码,可指定端口
# input,output,forward 分别指流入、流出、经过
iptables -A OUTPUT -s 11.22.33.44 -p all -j ACCEPT
iptables -A FORWARD -s 11.22.33.00/24 -p all -j ACCEPT
iptables -A INPUT -d 221.195.34.4 -p all -m multiport --dports 22,80 -j ACCEPT
# 保存配置并重启
/etc/rc.d/init.d/iptables save
service iptables restart

文件相关

tar

tar -cvf cdn.tar cdn/		# 打包,-v :压缩的过程中显示文件,可以去掉
tar -zcvf cdn.tar.gz cdn/	# gz压缩,或者-jcvf,bzip,文件格式为bz2
tar -ztvf /tmp/etc.tar.gz	# 查看文件
 
# 比2005/06/01新的文件才备份
tar -N "2005/06/01" -zcvf home.tar.gz /home 
# 备份 /home,但不要 /home/dmtsai 
tar --exclude /home/dmtsai -zcvf myfile.tar.gz /home/*

rz, sz

用rz,sz传输文件时,文件不能过大,可以先压缩,再切分,最后合并解压

split -b 10m -d -a 1 cdn.tar.gz cdn.tar.gz.
cat cdn.tar.gz.* | tar -zxv

文件整理

合并

对于已经多文件输出,类似Spark和hadoop的,找到名称符合标准的,再输出到一个文件 这个命令是find的exec,将找到的文件名当作参数传给exec后面的命令,大括号是参数位置

find -name "part-*" -exec 'cat' {} \; > test.tmp 

删除

# 删除指定日期前的文件(7天前)
find /dir/path -mtime +7 -type f | xargs rm -f
# 删除指定日期前的HDFS文件
./hadoop fs -ls /hdfs/dir/path | awk -F ' ' '{if($6<"2017-02-09") print $8}' | xargs ./hadoop fs -rmr

基本分析

# 查看第二列数据的分布情况
awk -F ',' 'BEGIN{m[$2]=1} {if($2 in m){m[$2]++}else{m[$2]=1}} END{for(one in m)printf("%s\t%d\n", one,m[one])}' filename.csv
# 排序
# 将第三列按数字从大到小顺序排列
sort -nrk 3 -t: sort.txt
# -n是按照数字大小排序,-r是以相反顺序,-k是指定需要爱排序的栏位,-t指定栏位分隔符为冒号
# 结合 uniq 统计出现最多的次数
grep '2017-11-11' log.file | sort -k 3 -t ' ' | uniq -c | sort 

修改文件内容

# 将 myfile 文件中每行第一次出现的foo用字符串bar替换,然后将该文件内容输出到标准输出
sed -e 's/foo/bar/' myfile
# g 使得 sed 对文件中所有符合的字符串都被替换
sed -e 's/foo/bar/g' myfile
# 选项 i 使得 sed 修改文件
sed -i 's/foo/bar/g' myfile 
#显示第二行到最后一行
sed -n '2,$p' myfile
# 删除首行
sed -i '1d' myfile
# 删尾行
sed -i '$d' myfile
# 删2到5行
sed -i ‘2,5d’ myfile
# 基于正则的操作
sed -i 's/[ ]*//g' myfile   # 删空格
sed -i '/^$/d' myfile       # 删空行
sed -i ‘/^[0-9]*$/d' myfile # 删包含数字的行

程序后台运行

# 直接用&
run-program &

# nohup
nohup run-program > nohup.ouput &

# Screen 方便
screen -S yourname	# 新建一个叫yourname的session
screen -ls			# 列出当前所有的session
screen -r yourname	# 回到yourname这个session
screen -d yourname	# 远程detach某个session
screen -d -r yourname	# 结束当前session并回到yourname这个session
Ctrl +a +d 			# detach,暂时离开当前session,当前程序丢到后台执行

# 将正在运行的程序切换为后台
Ctrl +z
jobs -l  # 查看进程的id号
bg %[id] # 后台运行
fg %[id] # 前台运行

查看信息

# 查看内核和系统信息等
cat /proc/version
uname -a
lsb_release -a
 
# 查看端口
netstat -nlp | grep portid
# 查看文件
lsof | grep xxxx
# 查看root打开的所有txt文件
lsof -a -u root -d txt