程序员-linux-命令详解大全

2019-08-25  本文已影响0人  javazhang2048

你早晚都要学会得linux命令。

学linux的时候,前辈们都说千万别用图形化界面,多敲命名有好处。这是接触到的一份liunx命令,也就整理留了下来。老样子 公众号回复linux下载全部~

stat命令查看一个文件的属性 :访问时间(Access)、修改时间(modify)、状态改变时间(Change)
stat filename
查找并删除/data这个目录7天前创建的文件
# find /data -ctime +7 -exec rm -rf {} \;
# find /data -ctime +7 | xargs rm -rf

find命令查找文件并复制到/opt目录
方法1:
# find /etc -name httpd.conf -exec cp -rf {} /opt/ \;:    #-exec执行后面命令,{}代表前面输出的结果,\;结束命令
方法2:
# find /etc -name httpd.conf |xargs -i cp {} /opt     #-i表示输出的结果由{}代替

查看根目录下大于1G的文件 默认单位是b,可以使用其他单位如,C、K、M
# find / -size +1024M

tar命令压缩排除某个目录
# tar zcvf data.tar.gz /data --exclude=tmp    #--exclude参数为不包含某个目录或文件,后面也可以跟多个

查看tar包存档文件,不解压
# tar tf data.tar.gz #t是列出存档文件目录,f是指定存档文件

实时查看系统所使用内存
#free -b -s5
5秒循环一次...

查看端口被哪个进程占用 
# lsof -i:端口号
# netstat -tunlp | grep 端口号

查看服务器IP连接数
# netstat -tun | awk '{print $5}' | cut -d: -f1 |sort | uniq -c | sort -n  
-tun:-tu是显示tcp和udp连接,n是以IP地址显示
cut -d:-f1:cut是一个选择性显示一行的内容命令,-d指定:为分隔符,-f1显示分隔符后的第一个字段。
uniq -c:报告或删除文中的重复行,-c在输出行前面加上出现的次数
sort -n:根据不同类型进行排序,默认排序是升序,-r参数改为降序,-n是根据数值的大小进行排序

iptables将本机80端口转发到本地8080端口
# iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-ports 8080

iptables网站跳转
先开启路由转发:
# echo "1" > /proc/sys/net/ipv4/ip_forward  #临时生效
内网访问外网(SNAT):
# iptables –t nat -A POSTROUTING -s [内网IP或网段] -j SNAT --to [公网IP]
内网服务器要指向防火墙内网IP为网关
公网访问内网(DNAT)(公网端口映射内网端口):
# iptables –t nat -A PREROUTING -d [对外IP] -p tcp --dport [对外端口] -j DNAT --to [内网IP:内网端口]
内网服务器要配置防火墙内网IP为网关,否则数据包回不来。另外,这里不用配置SNAT,因为系统服务会根据数据包来源再返回去
 
 
 修改网卡MAC地址:
#ifconfig eth0 down
#ifconfig eth0 hw ether 00:AA:BB:CCD:EE
#ifconfig eth0 up

列出nginx日志访问最多的10个IP
方法1:
# awk '{print $1}' access.log |sort |uniq -c|sort -nr |head -n 10
sort :排序
uniq -c:合并重复行,并记录重复次数
sort -nr :按照数字进行降序排序   
 
监控目录,新创建的文件名追加到日志中 要安装inotify-tools软件包
#!/bin/bash
MON_DIR=/opt
inotifywait -mq --format %f -e create $MON_DIR |\
while read files; do
? echo $files >> test.log
done

 
在Linux上释放所有arp:
#arp -d -a
 
关于sysctl: /etc/sysctl.conf对应的是/proc/sys/目录...
例如要修改/proc/sys/net/ipv4/ip_default_ttl的话,就修改/etc/sysctl.conf文件如下...
添加一行为:
net.ipv4.ip_default_ttl=255,也就是把文件夹变成小数点就可以啦
然后执行一次
#sysctl -p
就可以生效啦。

使用date修改系统时间:
$ date -s "20190301 14:31:00" 
#hwclock写入bios

使退出SSH后程序继续运行:
# disown
或者是
nohup command &

设置环境变量
#export 变量名=变量值

自动化任务  cron,at,batch
系统管理员通过cron.deny和cron.allow来禁止和允许用户拥有自己的crontab文件...
crontab的格式:  分 时 日 月 星期 要运行的命令(注意使用的命令必须是绝对路径)
crontab -e 编辑
crontab -r 删除
crontab -u user 用某用户来执行
crontab -l 列出当前crontab内容
at也通过/etc/at.allow和at.deny文件空子后哪些用户可以使用at命令,哪些不行

创建文件时即规定日期
#touch -t 11091531file            //11.09日15:31分

字符串判断
str1 = str2   两个串有相同内容、长度时为真
str1 != str2   str1和str2不等时为真
-n str1     串的长度大于0时为真(串非空)
-z str1     串的长度为0时为真(空串)
str1       str1为非空时为真
 
df 命令用于显示目前在Linux系统上的文件系统的磁盘使用情况统计
--block-size={SIZE} 使用 {SIZE} 大小的 Blocks
-k 等价于 --block-size=1024 -m  等价于 --block-size=1048576
-T 显示文件系统的形式

xargs 是给命令传递参数的一个过滤器 。可以将管道或标准输入(stdin)数据转换成命令行参数,也能够从文件的输出中读取数据, 也可以将单行或多行文本输入转换为其他格式,例如多行变单行,单行变多行。
 能够捕获一个命令的输出,然后传递给另外一个命令。由于很多命令不支持|管道来传递参数,而日常工作中有有这个必要,所以就有了 xargs 命令,例如:
 somecommand |xargs -item  command
-a file 从文件中读入作为sdtin
-e flag ,注意有的时候可能会是-E,flag必须是一个以空格分隔的标志,分析到含有flag这个标志的时候就停止。
-p 当每次执行一个argument的时候询问一次用户。
-n num 后面加次数,表示命令在执行的时候一次用的argument的个数,默认是用所有的。
-t 表示先打印命令,然后再执行。
-i 或者是-I,将xargs的每项名称,一般是一行一行赋值给 {},可以用 {} 代替。
-r no-run-if-empty 当xargs的输入为空的时候则停止xargs,不用再去执行了。
-s num 命令行的最大字符数,指的是 xargs 后面那个命令的最大命令行字符数。
-L num 从标准输入一次读取 num 行送给 command 命令
-d delim 分隔符,默认的xargs分隔符是回车,argument的分隔符是空格,这里修改的是xargs的分隔符
-x exit的意思,主要是配合-s使用
-P 修改最大的进程数,默认是1,为0时候为as many as it can ,这个例子我没有想到,应该平时都用不到的吧
上一篇 下一篇

猜你喜欢

热点阅读