linux日常命令

grep
定位到关键字所在的行

  • grep -n '关键字' filename
  • vim +n filename

查找文件中是否存在关键字

  • cat filename | grep ‘关键字' 

上传rz和下载sz
sz filename

  • sz参数:-a以文本方式传输ascii, -b二进制方式传输binary, -e控制字符转义,保证文件传输正确
  • sz -a files:确定为文本文件;sz -be files:确定为二进制文件

rz

  • rz参数:-b二进制方式,默认文本方式,-e 对所有控制字符转义
  • 注:如果要保证上传的文件内容在服务器端保存之后与原始文件一致,最好同时设置这两个标志
  • rz -be

less
内容搜索

  • less filename
  • 1.1 向前搜索【常用】
  • /:使用一个模式进行搜索,并定位到下一个匹配的文本
  • n:向前查找下一个匹配文本
  • N:向后查找前一个匹配文本
  • 1.2 向后搜索
  • ?:使用模式进行搜索,并定位到前一个匹配的文本
  • n:向后查找下一个匹配的文本
  • N:向前查找前一个匹配的文本

多文件浏览

  • less file1 file2
  • :n 浏览下一个文件 
  • :p 浏览上一个文件
     
  • less file1
  • :e file2
  • :n 浏览下一个文件 
  • :p 浏览上一个文件
  • 注:这个命令可以在浏览一个文件时,使用:e打开另一个文件

退出less

  • q或大写ZZ

more
类似cat命令,cat是将整个文件的内容显示在屏幕上,more会以一页一页的方式显示,按空白键(space)切换到下一页,按b回退到前一页,兼带搜索字符串功能,more从前往后读取文件,启动时加载整个文件。
more -n filename:定义屏幕大小为n行,从文件头开始没10行显示一屏。
more +n filename:从第n行开始显示。
more +/关键字 filename:搜索关键字,在搜索到的关键字的前两行开始显示。

sed
sed操作、过滤和转换文本内容的工具
常用功能有对文件实现快速增删改查
其中查询功能中最常用的两大功能是过滤(过滤指定字符串)和取行(取出指定行)
sed [选项] [sed内置命令字符] [文件]
选项:

  • -n  取消默认sed的输出,常与sed内置命令p连用
  • -i   直接修改文件内容,而不是输出到终端

注:如果不适用-i选项,sed只是修改内存中的数据,并不会影响磁盘上的文件
sed内置命令字符:

  • s 替换
  • g 全局global
  • p 打印print
  • d 删除delete


一些sed的常用命令
输出文件的第二、三行

  • sed -n '2,3p' log.log

过滤出含有"拦截"的行

  • sed -n '/拦截/p' log.log


默认情况下,sed把所有输入行都打印在标准输出上。如果在某一行匹配到拦截,sed就把该行另外打印一遍

  • sed '/拦截/p' log.log(不加选项-n)

删除含有"拦截"的行

  • sed /拦截/d log.log

替换log.log文件中"拦截"为"放行"

  • vim log.log
  • :%s#拦截#放行#g

修改文件

  • sed 's#拦截#放行#g' log.log(不改变原文件)
  • sed -i 's#拦截#放行#g' log.log(改变原文件)

nohup
允许进程不挂断在后台运行
操作系统中有三个常用的流:

  • 0:标准输入流 stdin
  • 1:标准输出流 stdout
  • 2:标准错误流 stderr

一般当我们用>console.txt实际上是对1>console.txt的省略用法,而<console.txt是对0<console.txt的省略用法。

>nohup ./start.sh >output 2>&1 &

&结尾含义:即使terminal终端关闭或电脑死机程序依然会运行(前提是你把程序上传到服务器)。
2>&1含义:把标准错误重定向到标准输出中,而标准输出又导入到文件output,所以标准错误、标准输出都导入到了文件output了。 至于为什么需要将标准错误重定向到标准输出,归根结底是因为标准错误stderr没有缓冲区,而标准输出stdout有,这就会导致>output 2>output文件output被打开两次,而stdout和stderr将会竞争覆盖。这就是为什么有人会写成: nohup ./command.sh >output 2>output出错的原因。

至于/dev/null文件,它是一个无底洞,任何东西都可以定向到这里,但是却无法打开。 所以一般很大的stdout和stderr,当你不关心的时候可以利用stdout和stderr定向到这里>./command.sh >/dev/null 2>&1。

ethtool、nload
查看网卡速率
1.查看网卡
ifconfig
2.查询或设置网卡参数命令
非root用户:sudo ethtool 网卡名称
root用户:ethtool 网卡名称
3.查看linux网络流量状况,实时输出
指定网卡:nload 网卡名称
所有网卡:nolad -m

curl
curl -H 'Content-Type:application/json' -d '{"name":"andylau"}' url -v
-H:指定请求头
-d:标识为post请求,指定请求数据体
-v:显示请求详细信息
-I:同--head向服务器发起HEAD请求,然后打印http头
-i:输出http头,空一行再输出响应数据
-b:参数用来向服务器发送 Cookie                  如$ curl -b 'foo=bar' https://google.com
      发送多个cookie                                          如$ curl -b 'foo1=bar;foo2=bar2' https://google.com
      读取本地文件cookies.txt,发送到服务器   如$ curl -b cookies.txt https://www.google.com
-c:服务器设置的cookie写入一个文件             如$ curl -c cookies.txt https://www.google.com
--limit-rate:用于限制http请求和回应的带宽,模拟慢网速环境   如$ curl --limit-rate 200k https://google.com
-u:用来设置服务器认证的用户名和密码   如$ curl -u 'bob:12345' https://google.com/login 或 $ curl https://bob:12345@google.com/login
-x:指定http请求代理
-X:指定http请求方法

tar -czvf test.tar.gz a.txt  #创建
tar -tzvf test.tar.gz        #列出文件内容
tar -xzvf test.tar.gz        #解压


控制shell程序的资源
ulimit -a     #显示目前资源限制的设定
ulimit -u 500 #用户最多可开启的程序数目


操作系统的虚拟内存、进程、磁盘、内存、cpu等监控
vmstat 2 10 #每隔两秒采集一次服务器运行状态、采集10次


unzip test.zip            #解压到当前目录
unzip -n test.zip -d /tmp #解压到指定目录tmp,不覆盖已有文件
unzip -o test.zip -d /tmp #解压到指定目录tmp,覆盖已有文件
unizp -v test.zip         #查看test.zip内容,不解压


docker exec -it 1f54dcfcd617 /bin/sh  #进入容器:进行一些操作
docker run -it 1f54dcfcd617 /bin/sh   #启动镜像
docker start 容器id
docker restart 容器id
docker stop 容器id
docker container cp -a df920e2be194:/logs/hzsmk-sc/log.log . #拷贝容器内文件到主机当前目录
docker cp /www/runoob 96f7f14e99ab:/www/                     #将主机/www/runoob目录拷贝到容器96f7f14e99ab的/www目录下


cat test.txt | awk -F 'txt=|&client&' '{print $2}'|sort|uniq -c|sort -nr > aa.txt
awk命令
-F选项
txt=|&client& #分隔符pattern
{print $2}    #action
sort排序      #内容排序
uniq -c       #统计数量与去重
sort -nr      #按数值大小降序排序(-n按数值、-r降序)
写入文件>     #覆盖原文件内容
写入文件>>    #追加到原文件内容后


设置文件权限
chmod ugo+r test.txt和chmod a+r test.txt效果相同
chmod ug+w,o-w file1.txt file2.txt 将文件file1.txt与file2.txt设为该文件拥有者,与其所属同一个群体者可写入,但其他以外的人则不可写入 :
chmod -R a+r * 将目前目录下的所有文件与子目录皆设为任何人可读取 :
chmod a=rwx file和chmod 777 file效果相同
chmod ug=rwx,o=x file和chmod 771 file效果相同
chmod 4755 filename 可使此程序具有root的权限


more -n filename:      #义屏幕大小为n行,从文件头开始没10行显示一屏。
more +n filename:      #从第n行开始显示。
more +/关键字 filename:#搜索关键字,在搜索到的关键字的前两行开始显示。


top                                              #查看进程占用资源情况
top -H -p <pid>                                  #查看线程占用情况
ps -mp pid(进程id) -o THREAD,tid,time            #查看线程列表:-mp显示所有线程\pid进程使用cpu的时间,-o用户自定义格式
printf "%x\n" 15664
jstack <pid> | grep -A 20 线程id(十六进制)     #定位到线程ID的后20行
jmap -heap 10765                                 #查看进程新生代、老年代堆内存的分配大小以及使用情况,看是否本身分配过小
jmap -histo:live 10765 | more                    #找到最消耗内存的对象
jmap -dump:live,format=b,file=dump.hprof 进程id  #jmap命令dump出堆里的对象文件


jstat -gcutil 9596 250 12     #进程9596每隔250ms打印一次,打印12次。
jstat -gccause pid            #查看gc详细原因
jmap -histo 进程id > jmap.txt #dump文件分析,找到占用内存的对象,定位到具体code。


jstat -gc pid              #垃圾回收统计
jstat -gcutil pid          #总结垃圾回收统计
jstat -gcnew pid           #新生代垃圾回收统计
jstat -gccapacity pid      #堆内存统计
jstat -gcmetacapacity pid  #元数据空间统计
jstat -gcnewcapacity pid   #新生代内存空间统计
jstat -gcoldcapacity pid   #老年代内存空间统计


jmap pid                #查看进程的内存映像信息
jmap -heap pid          #显示Java堆详细信息
jmap -histo:live pid    #显示堆中对象的统计信息
jmap -clstats pid       #打印类加载器信息
jmap -finalizerinfo pid #打印等待终结的对象信息
jmap -dump:format=b,file=heapdump.phrof pid #生成堆转储快照dump文件


netstat -a                #列出所有端口 
netstat -at               #列出所有tcp端口 
netstat -au               #列出所有udp端口
netstat -l                #列出所有处于监听状态的Sockets
netstat -lt               #只列出所有监听tcp端口 
netstat -lu               #只列出所有监听udp端口 
netstat -lx               #只列出所有监听UNIX端口
netstat -c                #netstat将每隔一秒输出网络信息。
netstat -i                #显示网络接口列表
netstat -anp|grep ':3306' #找出运行在指定端口的进程
netstat -ap | grep ssh    #找出程序运行的端口


telnet ip       #用于远程登入
telnet ip 端口  #用于判断服务器ip端口是否网络通


free         #内存使用情况
free -h      #友好显示
free -h -s 3 #每隔3秒显示


top          #各个进程资源占用情况
top后按1     #查看各个逻辑cpu的使用情况


ping www.baidu.com                     #用来测试与目标主机的连通性
ping -c 5 www.baidu.com                #指定ping次数
ping -f www.baidu.com                  #洪水ping,也就是以最快的速度去ping,可以用来测试丢包率
ping -i 3 -s 1024 -t 255 www.baidu.com #-i 3发送周期为3秒、-s设置发送包的大小1024字节、-t设置TTL值为255


ifconfig                                        #显示网络设备信息
ifconfig eth0 up/down                           #启动关闭指定网卡
ifconfig eth0 add/del 33ffe:3240:800:1005::2/64 #为网卡配置和删除IPv6地址
ifconfig eth0 hw ether 00:AA:BB:CC:DD:EE        #用ifconfig修改MAC地址
ifconfig eth0 192.168.120.56                    #给eth0网卡配置IP地:192.168.120.56
ifconfig eth0 192.168.120.56 netmask 255.255.255.0 #给eth0网卡配置IP地址:192.168.120.56 ,并加上子掩码:255.255.255.0
ifconfig eth0 192.168.120.56 netmask 255.255.255.0 broadcast 192.168.120.255 #/给eth0网卡配置IP地址:192.168.120.56,加上子掩码:255.255.255.0,加上个广播地址: 192.168.120.2
ifconfig eth0 arp      #开启网卡eth0的arp协议;
ifconfig eth0 -arp     #关闭网卡eth0的arp协议;
ifconfig eth0 mtu 1500 #设置能通过的最大数据包大小为1500bytes


grep搜索文本
grep -i LinuxTechi /etc/passwd  #-i忽略大小写
grep ^$ /etc/shadow             #查找文件中所有的空行
grep -e "linuxtechi" -e "root" /etc/passwd #-e参数查找多个模式
grep -r linuxtechi /etc/        #递归查询目录下文本
grep ^root /etc/passwd          #以root开头
grep bash$ /etc/passwd          #以bash开头
grep -n linuxtechi /etc/passwd  #显示行号
grep linuxtechi /etc/passwd /etc/shadow /etc/gshadow #多个文件中查找模式
grep -v linuxtechi /etc/passwd  #反向查找,输出/etc/passwd文件中所有不含单词“linuxtechi”的行


tail查看日志
tail /etc/passwd          #默认显示最后10行
tail -2 /etc/passwd       #显示最后2行
tail -f /var/log/messages #-f实时监控
tail -n 2 /etc/passwd /etc/shadow #同时显示两个文件的最后2行
tail -f /var/log/httpd/access_log |grep 192.168.43.157 #要实时监视apache访问日志文件并显示包含IP地址192.168.43.157的行


history 2 #查看最近两条记录
!!        #使用最近一次使用的命令
!994      #使用第num条命令
!echo     #显示最近使用的某个特定命令
先执行ls sun.txt, 后执行cat !$  #显示cat sun.txt(!$指上条命令的参数)


echo $HISTSIZE
export $HISTSIZE=500
history -c      #清除所有的历史记录
history -d 212  #清除212行的命令数据


cp cangls /tmp/          #复制文件到tmp目录下
cp cangls /tmp/bols      #改名复制
cp -r /root/movie/ /tmp/ #目录复制


mv a.txt b.txt  #重命名文件
mv -r dir1 dir2 #dir1下文件及目录复制到dir2下
mv a.txt dir2   #a.txt文件复制到dir2目录下

ln -s dir dir.link   #创建软链接(支持目录、可跨文件系统,相当于winodws快捷方式)
ln a.txt  a.link     #创建硬链接(不支持目录、不可跨文件系统)
rm -rf dir.link      #删除软链接,错误写法:rm -rf dir.link/,会删除dir目录下内容、dir和dir.link都还存在
硬链接不占用磁盘空间,软链接占用的空间只是存储路径所占用的极小空间

scp -r /home/space/music/ root@www.runoob.com:/home/root/others/    #本地目录到远程
scp /home/space/music/1.mp3 root@www.runoob.com:/home/root/others/musi #本地文件到远程
scp -r root@www.runoob.com:/home/root/others/ /home/space/music/  #远程目录到本地

如果远程服务器防火墙有为scp命令设置了指定的端口,我们需要使用 -P 参数来设置命令的端口号,命令格式如下:
scp -P 4588 remote@www.runoob.com:/usr/local/sin.sh /home/administrator

firewall防火墙
systemctl status firewalld #查看firewall服务状态
出现Active: active (running)切高亮显示则表示是启动状态。
出现 Active: inactive (dead)灰色表示停止。
firewall-cmd --state #查看firewall的状态

service firewalld start #开启firewalld.service服务
service firewalld restart #重启firewalld.service服务
service firewalld stop #关闭firewalld.service服务
firewall-cmd --list-all #查看防火墙规则

firewall-cmd --query-port=8080/tcp # 查询端口是否开放
firewall-cmd --permanent --add-port=80/tcp # 开放80端口
firewall-cmd --permanent --remove-port=8080/tcp # 移除端口
firewall-cmd --reload #重启防火墙(修改配置后要重启防火墙)

# 参数解释
1、firwall-cmd:是Linux提供的操作firewall的一个工具
2、--permanent:表示设置为持久
3、--add-port:标识添加的端口

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值