Centos7 常用操作
1、开放防火墙端口
firewall-cmd --zone=public --add-port=9092/tcp --permanent firewall-cmd --zone=public --add-port=7000-40000/tcp --permanent firewall-cmd --reload
2、docker查看每个容器的ip
docker inspect --format='{{.Name}} - {{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' $(docker ps -aq)
3、开放当前服务器所有监听的端口
#!/bin/bash # 获取所有TCP或UDP端口 ports=$(netstat -npltu | awk '/^tcp/ || /^udp/ {print $4}' | awk -F':' '{print $NF}' | sort -n | uniq) # 开放所有TCP或UDP端口 for port in $ports do # 使用firewall-cmd命令开放tcp端口 firewall-cmd --zone=public --add-port=$port/tcp --permanent # 使用firewall-cmd命令开放tcp端口 firewall-cmd --zone=public --add-port=$port/udp --permanent done
# 重新加载防火墙配置
firewall-cmd --reload
4、if命令语句整成一行
if [ -e $dist_dir/$dist_name ]; then mv $dist_dir/$dist_name ${dist_dir}/${dist_name}-$(date +'%Y-%m-%d_%H:%M:%S'); fi
5、rsync命令
# 从服务端同步数据到本地 rsync -avzP -e "ssh -p 1130" myuser@10.10.10.15:backup ./ -v, –verbose详细模式输出。–verbose 复杂的输出信息 -a, –archive归档模式,表示以递归方式传输文件,并保持所有文件属性不变。–archive archive mode 权限保存模式,相当于 -rlptgoD 参数,存档,递归,保持属性等
-r:–recursive 复制所有下面的资料,递归处理。 -z, –compress对备份的文件在传输时进行压缩处理。 –delete:删除那些DST中存在而在SRC中没有的文件。
-P:-P参数和 --partial --progress 相同,只是为了把参数简单化,表示传进度。
-e: 指定ssh的端口
6、只下载rpm包不安装
#只下载rpm包不安装 yumdownloader --downloadonly --destdir=/opt/test openssh-clients-7.4p1-22.el7_9.x86_64 #yum命令的参数有很多,其中就有只是下载而不需要安装的命令,并且也会自动解决依赖;通常和 --downloaddir 参数一起使用。
#说明:如果该服务器已经安装了需要下载的软件包,那么使用 install下载就不行,可以使用reinstall下载。 放心(不会真的安装和重新安装,因为后面加了 --downloadonly,表明只是下载。
yum install --downloadonly --downloaddir=/opt openssh-clients
yum reinstall --downloadonly --downloaddir=/opt openssh-clients
最保险的方法:
要下载 tcpdump
及其所有依赖项的 RPM 包,您可以使用 yumdownloader
命令结合 yum deplist
命令来实现。以下是具体步骤:
-
首先,使用
yum deplist
命令查看tcpdump
的所有依赖项:shellCopy Codeyum deplist tcpdump
这将列出
tcpdump
的所有依赖项及其相关信息。 -
然后,使用
yumdownloader
命令结合grep
和awk
命令来批量下载这些依赖项的 RPM 包到指定目录。假设您要将这些 RPM 包下载到名为tcpdump-deps
的目录中,可以使用以下命令:shellCopy Codemkdir tcpdump-deps yum deplist tcpdump | grep provider | awk '{print $2}' | xargs -I {} yumdownloader --destdir=./tcpdump-deps {}
这将下载
tcpdump
及其所有依赖项的 RPM 包到当前目录下的tcpdump-deps
目录中
7、查看程序有没有用到多线程
1.使用 ps 命令:使用 ps -eLf | grep <程序名> 命令可以列出系统上所有进程的线程信息,并通过 grep 过滤指定程序的线程信息 #-L:显示每个进程的线程信息。 ps -eLf | grep redis 2.使用 pstree 命令:假设 myprogram 的父进程PID为 12345,运行 pstree -p 12345 命令可以显示 myprogram 及其所有子进程的树状结构。通过观察树状结构中的进程数量,可以判断程序是否使用了多进程。
8、查看某个进程运行了多久
ps -eo pid,comm,etime | grep mysql
9、将一个命令所有输出都写入my.log文件
在Linux中,如果你想要将一个命令的所有输出(标准输出和标准错误)写入到一个文件中,例如my.log,你可以使用重定向操作符。这里有两种主要的方式来实现: 使用>和2>&1来重定向输出: 这个方法会将标准输出(stdout)重定向到my.log文件,然后将标准错误(stderr)重定向到标准输出(这意味着错误信息也会被写入到my.log中)。 假设你的命令是your_command,那么相应的命令行语句就是: your_command >my.log 2>&1 这里,>操作符负责将your_command的标准输出重定向到my.log,而2>&1确保标准错误也被重定向到同一个地方。 使用&>来重定向输出(较新的bash版本中): 在一些较新版本的bash中,你可以使用&>作为一个更简洁的方式来同时重定向标准输出和标准错误。 使用相同的命令your_command,相应的命令行语句就是: your_command &>my.log 这两种方法都会覆盖my.log文件中原有的内容。如果你希望保留my.log文件中原有的内容,并将新的输出追加到文件末尾,可以使用>>和2>>&1(对于方法1)或者&>>(对于方法2)来代替。例如,使用第一种方法的追加模式: your_command >>my.log 2>&1 或者,使用第二种方法的追加模式: your_command &>>my.log 选择哪种方式取决于你的具体需求和你使用的shell环境。
13、删除一个目录下的旧文件,只保留最新的2个文件。
#删除超过2个的sql backup_num=$(ls -1 /home/147-wiki-backup/sql_backup/ | wc -l) if [ ${backup_num} -gt 2 ] then cd /home/147-wiki-backup/sql_backup/ && ls -t | awk 'NR>2' | xargs rm -rf fi
14、释放内存
sync && echo 3 > /proc/sys/vm/drop_caches
15、查某进程的ppid
#! /bin/bash pid=$1 ppid=$(cat /proc/${pid}/status | grep "PPid" | awk -F ' ' '{print $2}') echo $ppid while [ $ppid != "1" ] do tmp_pid=$ppid tmp_ppid=$(cat /proc/${tmp_pid}/status | grep "PPid" | awk -F ' ' '{print $2}') ppid=$tmp_ppid echo $ppid done
16、查看当前命令下的所有隐藏目录空间各个大小总和
du -sh .[^.]* */