你早晚都要学会得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 ,这个例子我没有想到,应该平时都用不到的吧
网友评论