Centos常用命令

477 阅读3分钟

查看具体的Centos版本(下面任意一条命令)

cat /etc/redhat-release
rpm -q centos-release
lsb_release -a   # 事先必须先安装好 lsb_release 这个工具
# 压缩命令,参数z是压缩
# tar压缩当前目录(如果目录有空格的话,命令会执行失败)
WORKPATH=$PWD && tar -czvf $(basename `pwd`).tar.gz -C $WORKPATH $(ls -all $WORKPATH)
# 压缩指定文件夹
tar -czvf postgres-idc.tar.gz postgres

# tar解压到指定文件夹
tar -zxvf dapeng.tar.gz -C /data/nginx/html

yum下载软件离线安装包和依赖包

mkdir -p /opt/packages/dockerRepo/18.06.1
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum install --downloadonly --downloaddir=/opt/packages/dockerRepo/18.06.1 docker-ce-18.06.1.ce-3.el7.x86_64
查看指定端口服务的PID
netstat -nlp | grep :8080 | awk '{print $7}' | awk -F"/" '{ print $1 }'
关掉指定端口的服务
kill -9 $(netstat -nlp | grep :8080 | awk '{print $7}' | awk -F"/" '{ print $1 }')

Linux查看服务监听的端口

yum install net-tools
netstat -antu
netstat -tunlp
netstat -antu | grep LISTEN
# Ubuntu查看指定的端口占用情况
# lsof -i:9898

netstat -ntpl # 等同于 netstat -antu | grep LISTEN  或者等同于  netstat -tunlp | grep LISTEN 
# Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
# tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      1557/sshd
# tcp        0      0 127.0.0.1:6942          0.0.0.0:*               LISTEN      6211/java
# tcp6       0      0 :::22                   :::*                    LISTEN      1557/sshd

Linux查看某个进程开启的线程以及数量

# Linux查看某个进程开启的线程
top -H -p {pid}
# Linux查看某个进程开启的线程数量
ps huH p  {pid}  | wc -l

Linux搜索指定路径下的文件内容

# 查找子孙文件夹下包含指定字符串的文件名
grep   -lr   'import'   .
# 要将当前目录的下面所有文件中的old都修改成new,这样做:
sed   -i   's|old|new|g'   `grep   'old'   -rl   .`

# grep加-i参数不区分大小写
grep -rni "netty" .
grep -rn -i "netty" /opt/soft
# grep指定搜索指定的后缀名
grep -R -n -i --include="*.java" "netty" .
grep -R -n -i --include="*.java" "netty" /opt/soft

###sed替换文件内容

# sed要覆盖替换文件,必须加 -ri 参数
# -i表示替换,       -i[SUFFIX], --in-place[=SUFFIX] edit files in place (makes backup if SUFFIX supplied)
# -r表示正则表达式,  -r, --regexp-extended use extended regular expressions in the script.
sed -ri 's/^#?PermitRootLogin\s+.*/PermitRootLogin yes/' /etc/ssh/sshd_config ;

释放centos7 缓存

echo 3 > /proc/sys/vm/drop_caches
查看前面n行或者最后n行数据
tail -n 1000 /aa.txt  # 打印文件最后1000行的数据
tail -n +1000 /aa.txt # 打印文件第1000行开始以后的内容
head -n 1000 /aa.txt  # 打印前1000的内容
sed -n '1000,3000p' filename  # 显示1000到300行的数据

Linux下iconv转换文件从GBK到UTF-8

iconv -f gbk -t utf-8 source-file -o target-file

Linux禁止删除文件夹

  • 在Ubuntu实验时,发现root用户可以chattr命令,普通用户加上sudo也可以使用chattr命令,普通用户直接输入chattr命令,Ubuntu不会提示没权限,提示了人看不懂含义的警告
  • 对某个文件夹使用chattr命令后,该文件夹内就不能创建文件夹和文件了,但是该文件夹内的子文件夹可以创建文件和文件夹
mkdir -p workspace/son
echo 'qqqqqqqqqqqq' >> workspace/son.txt
# sudo chattr +i workspace/
echo "密码" | sudo -S chattr +i workspace/

# 通过查看当前路径下的文件和文件夹的lsattr属性
lsattr $PWD
# ----i---------e--- /当前路径/workspace      # 输出结果

# 执行下面删除命令,创建子文件和创建子文件夹命令,提示 `不允许的操作`
rm -rf workspace/son
# rm: 无法删除'workspace/son': 不允许的操作
rm -rf workspace/son.txt
# rm: 无法删除'workspace/son.txt': 不允许的操作
mkdir -p workspace/son1
# mkdir: 无法创建目录"workspace/son1": 不允许的操作
echo 'qqqqqqqqqqqq' >> workspace/son1.txt
# bash: workspace/son1.txt: 不允许的操作

# 可以修改直属子文件
echo 'qqqqqqqqqqqq' >> workspace/son.txt

# 删除权限
echo "密码" | sudo -S chattr -i workspace/
lsattr $PWD
# --------------e--- /当前路径/workspace      # 输出结果

shell脚本关闭指定端口的服务

#!/bin/bash

serverPort=8888
currentPath=$(cd "$(dirname "$0")"; pwd)
echo "current path:"${currentPath}
cd ${currentPath}

# kill -9 $(netstat -nlp | grep :8080 | awk '{print $7}' | awk -F"/" '{ print $1 }')
# shell脚本给变量赋值,等号两边不能有括号,否则死的时候武眼睇
PID=$(netstat -nlp | grep :${serverPort} | awk '{print $7}' | awk -F"/" '{ print $1 }')
if [ "" != "$PID" ]; then
  echo "close service in port "${serverPort}
  kill -9 $PID
fi
java -Xmx2560m -Xms256m -Xmn128m -Xss1m -jar ${currentPath}/icity-admin-service-1.0.0-SNAPSHOT.jar --server.port=${serverPort} >> ${currentPath}/log.log &