Linux命令积累(持续更新)

1549 17~22 min

grep命令

grep -r "xxx" 查找的目标路径
例: grep -r "6yi" /root 
模糊查询“6yi”字符串在root目录下出现的文件

# 反向匹配, 查找不包含xxx的内容
grep -v xxx

# 排除所有空行
grep -v '^/pre>

# 返回结果 2,则说明第二行是空行
grep -n “^$” 111.txt    

# 查询以abc开头的行
grep -n “^abc” 111.txt 

# 同时列出该词语出现在文章的第几行
grep 'xxx' -n xxx.log

# 计算一下该字串出现的次数
grep 'xxx' -c xxx.log

# 比对的时候,不计较大小写的不同
grep 'xxx' -i xxx.log

find命令

# 在目录下找后缀是.mysql的文件
find /home/eagleye -name '*.mysql' -print

# 会从 /usr 目录开始往下找,找最近3天之内存取过的文件。
find /usr -atime 3 –print

# 会从 /usr 目录开始往下找,找最近5天之内修改过的文件。
find /usr -ctime 5 –print

# 会从 /doc 目录开始往下找,找jacky 的、文件名开头是 j的文件。  
find /doc -user jacky -name 'j*' –print

# 会从 /doc 目录开始往下找,找寻文件名是 ja 开头或者 ma开头的文件。
find /doc \( -name 'ja*' -o- -name 'ma*' \) –print

#  会从 /doc 目录开始往下找,找到凡是文件名结尾为 bak的文件,把它删除掉。-exec 选项是执行的意思,rm 是删除命令,{ } 表示文件名,“\;”是规定的命令结尾。 
find /doc -name '*bak' -exec rm {} \;

端口查看相关

netstat -lnpt
列出所有的tcp 和 tcp6的占用情况端口 

防火墙相关

firewall-cmd --list-ports #列出所有的已经开放的端口
firewall-cmd --add-port=xxxx/tcp #对防火墙开放哪些端口
firewall-cmd --add-port=xxxx/tcp --permanent #永久开放
firewall-cmd --reload #添加或者修改完进行重新加载操作生效

systemctl某个service服务的启动日志查看命令

 $journalctl -u `service-name`

Linux查看登录日志

 $cat /var/log/secure 
 # 最近登录的5个账号
 last -n 5  

yum安装各类工具(持续更新)

$ yum install -y net-tools # 安装ifconfig,netstat命令

$ yum install -y vim # 安装vim编辑器

查看本机IP

# (6) Could not resolve host: cc.cip; 未知的错误
出现如上错误可运行下方的curl 其他网址
$ curl cc.cip
$ curl http://members.3322.org/dyndns/getip
$ curl icanhazip.com
$ curl ident.me
$ curl ifconfig.me
$ curl ifconfig.co
$ curl ip.6655.com/ip.aspx
$ curl ip.cip.cc
$ curl ipecho.net/plain
$ curl myip.dnsomatic.com
$ curl whatismyip.akamai.com

查看本机Linux发行版本

$cat /etc/redhat-release
CentOS Linux release 7.9.2009 (Core)

安装命令补全工具

$yum install bash-completion
$source /usr/share/bash-completion/bash_completion

开关机命令

# 关机
$shutdown -h now
# 重启
$shutdown -r now

生成sshkey命令

# 创建sshkey
ssh-keygen -t rsa -C [email protected]

#id_rsa.pub 的内容拷贝到要控制的服务器的 home/username/.ssh/authorized_keys 中,如果没有则新建(.ssh权限为700, authorized_keys权限为600)

后台运行命令

# 后台运行,并且有nohup.out输出
nohup xxx &

# 后台运行, 不输出任何日志
nohup xxx > /dev/null &

# 后台运行, 并将错误信息做标准输出到日志中 
nohup xxx >out.log 2>&1 &

配置dns

vim /etc/resolv.conf

vim操作

#normal模式下 g表示全局, x表示查找的内容, y表示替换后的内容
:%s/x/y/g

#normal模式下
0  # 光标移到行首(数字0)
$  # 光标移至行尾
shift + g # 跳到文件最后
gg # 跳到文件头

# 显示行号
:set nu

# 去除行号
:set nonu

# 检索
/xxx(检索内容)  # 从头检索, 按n查找下一个
?xxx(检索内容)  # 从尾部检索

#打开只读文件,修改后需要保存时(不用切换用户即可保存的方式)
# 在normal模式下
:w !sudo tee %

# vim中复制50行以上
比如你要复制连续的60行,光标到你要复制的第一行,输入60yy,然后再到你需要数据的地方,输入p

查看磁盘, 文件目录基本信息

# 查看磁盘挂载情况
mount

# 查看磁盘分区信息
df

# 查看目录及子目录大小
du -H -h

# 查看当前目录下各个文件, 文件夹占了多少空间, 不会递归
du -sh *

常用压缩, 解压缩命令

# 压缩相关
tar czvf xxx.tar 压缩目录

zip -r xxx.zip 压缩目录

# 解压相关
tar zxvf xxx.tar

# 解压到指定文件夹
tar zxvf xxx.tar -C /xxx/yyy/

unzip xxx.zip

变更文件所属用户, 用户组

$ chown eagleye.eagleye xxx.log

复制创建文件夹,跨服务器传输相关

#复制
cp xxx.log

# 复制并强制覆盖同名文件
cp -f xxx.log

# 复制文件夹
cp -r xxx(源文件夹) yyy(目标文件夹)

# 远程复制
scp -P ssh端口 [email protected]:/home/username/xxx /home/xxx

# 级联创建目录
mkdir -p /xxx/yyy/zzz

# 批量创建文件夹, 会在test,main下都创建java, resources文件夹
mkdir -p src/{test,main}/{java,resources}

比较两个文件

diff -u 1.txt 2.txt

命令行上传、下载文件

# 安装rz 和命令包
$yum install -y lrzsz
rz 上传
sz 下载

奇淫巧技

Ctrl + a:移到行首。
Ctrl + b:向行首移动一个字符,与左箭头作用相同。
Ctrl + e:移到行尾。
Ctrl + f:向行尾移动一个字符,与右箭头作用相同。
Alt + f:移动到当前单词的词尾。
Alt + b:移动到当前单词的词首。
Ctrl + d:删除光标位置的字符( delete )。
Ctrl + w:删除光标前面的单词。
Ctrl + t:光标位置的字符与它前面一位的字符交换位置( transpose )。
Alt + t:光标位置的词与它前面一位的词交换位置( transpose )。
Alt + l:将光标位置至词尾转为小写( lowercase )。
Alt + u:将光标位置至词尾转为大写( uppercase )。
Ctrl + k:剪切光标位置到行尾的文本。
Ctrl + u:剪切光标位置到行首的文本。
Alt + d:剪切光标位置到词尾的文本。
Alt + Backspace:剪切光标位置到词首的文本。
Ctrl + y:在光标位置粘贴文本。

查看本地端口的详细信息

例如查询本地的50222端口的运行情况

  • 首先,使用 netstat 命令找到使用50222端口的进程信息:
    netstat -tnp | grep 50222
  • 根据输出结果显示端口由4031进程运行 这里的 4031 是进程ID(PID)。
    tcp6 0 0 172.17.224.21:50222 172.17.44.142:5672 ESTABLISHED 4031/java
  • 然后,使用 ps 命令结合进程ID来查找对应的进程信息:
    ps aux | grep 4031
    这将显示进程ID为4031的进程的详细信息,包括进程名称、运行状态等。
    root 4031 2.0 3.1 4694480 1006124 ? Ssl Mar20 141:25 java -server -Xmx1024m -Xms1024m -Xmn512m -Xss256k -verbose:gc -Xloggc:/work/logs/xxxx-push-msg/gc.log -XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:+PrintHeapAtGC -XX:+DisableExplicitGC -XX:MetaspaceSize=256m -XX:MaxMetaspaceSize=512m -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/work/logs/xxxx-push-msg/ -jar xxxx-push-msg.jar --spring.profiles.active=prod
    root 29105 0.0 0.0 112816 976 pts/0 S+ 13:46 0:00 grep --color=auto 4031