CentOS 命令

Author Avatar
mgzu POST: 2020-01-08 UPDATED: 2020-01-26

主要是 centos 6、7 命令,未特别标注则为 centos7 命令

文件操作

文件压缩及解压

filename 文件名,dirname 文件夹名

压缩

  • .tar.gz -> tar -cjvf filename.tar.gz dirname
  • .tar.bz2 -> tar -czvf filename.tar.bz2 dirname
  • .zip -> zip -rv filename.zip dirname

解压

  • .tar.gz -> tar -xzvf filename.tar.gz
  • .tar.bz2 -> tar -xjvf filename.tar.bz2
  • .zip -> unzip filename.zip

分割、合并

1
2
3
4
5
6
# zip
zip -s 3g a.zip --out b.zip
zip -s 0 b.zip --out a.zip
# tar(不建议使用)
split -b 4000k skype_backup.tar.gz skype_backup_s.tar.gz. –verbose
cat skype_backup_s.tar.gz.a* > skype_backup_cat.tar.gz

如 zip 命令不存在,可以参考下方 rpm 离线安装包,下载 zip 命令离线安装包

文件传输

linux 间文件传输

1
2
3
4
# 将本地文件复制到远程
scp avg.tar.gz root@101.176.31.63:/share
# 将远程文件复制到本地
scp root@112.49.11.147:/home/local/ xs_sdk.tar

硬链&软链

1
2
3
4
5
6
# 硬链,不可链接文件夹
ln /home/share /share
# 软链
ln -s /home/share /share
# 删除软链
rm -rf /share(后面不能带 /,否则,真实目录下的文件也会被删除)

xshell 模糊匹配文件下载到 windows

1
2
yum install lrzsz
sz *filename*.txt

返回上一个文件夹

1
cd $OLDPWD

批量重命名

将文件名中的 ‘.txt’ 替换为 ‘.daily.txt’

1
for file in `ls *.txt`;do mv $file `echo $file|sed 's/.txt/.daily.txt/g'`;done;

任务

后台运行任务

1
2
3
4
# shell 后台任务,直接关闭 ssh 会导致任务结束,可以使用 exit 退出 ssh,这样任务将继续运行
python filename.py arg arg > filename.log 2>&1 &
# 基于
nohup python filename.py arg arg > filename.log 2>&1 &

开机执行命令

1
2
3
4
# /etc/rc.local 软链到 /etc/rc.d/rc.local
vim /etc/rc.local
# /etc/rc.d/rc.local 默认没有执行权限
chmod +x /etc/rc.d/rc.local

服务

服务开机自启

centos 6

1
2
3
4
# 服务开机自启
chkconfig mysqld on
# 查询服务是否开机自启
chkconfig --list | grep mysqld

centos 7

1
2
3
4
# 服务开机自启
systemctl enable mysqld.service
# 查询服务是否开机自启
systemctl is-enabled mysqld.service

服务注册

不同服务配置可能会存在差异,这里以 tomcat 为例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
vim /usr/lib/systemd/system/tomcat.service
添加以下内容
[Unit]
Description=Tomcat
After=syslog.target network.target remote-fs.target nss-lookup.target

[Service]
Type=oneshot
ExecStart=/share/tomcat/apache-tomcat-7.0.90/bin/startup.sh
ExecStop=/share/tomcat/apache-tomcat-7.0.90/bin/shutdown.sh
ExecReload=/bin/kill -s HUP $MAINPID
RemainAfterExit=yes

[Install]
WantedBy=multi-user.target

其它配置

1
2
3
4
5
在启动服务(systemctl start tomcat.service)时可能会遇到以下问题
Neither the JAVA_HOME nor the JRE_HOME environment variable is defined
这里需要修改 ${CATELINA_HOME}/bin/setclasspath.sh,添加环境变量配置
export JAVA_HOME=/usr/jdk/jdk1.7.0_80
export JRE_HOME=/usr/jdk/jdk1.7.0_80/jre

mongodb service

1
2
3
4
5
6
7
8
9
10
11
12
13
[Unit]
Description=mongodb
After=network.target remote-fs.target nss-lookup.target

[Service]
Type=forking
ExecStart=/home/mongodb/bin/mongod --config /mnt/app/mongodb/bin/mongodb.conf
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/home/mongodb/bin/mongod --shutdown --config /home/mongodb/bin/mongodb.conf
PrivateTmp=true

[Install]
WantedBy=multi-user.target

磁盘

常用命令

  • df -h
    查看磁盘使用率和分区状态
  • du -h(-sh)
    查看文件夹的占用磁盘空间大小
  • head -10 filename
    查看文件前几行
  • tail -10 filename
    查看文件后几行
  • iostat -d -x -k 1
    查看磁盘利用率

磁盘格式化

1
mkfs -t xfs /dev/sdd

磁盘挂载

mount 10.194.22.32:/yc /mnt/hisData

1
2
3
4
# 挂载 linux 共享目录,将 192.168.1.1 的 /data/nfs-share 目录,挂载到本地 /data/share-file 目录
mount 192.168.1.1:/data/nfs-share /data/share-file
# 挂载 windows 共享目录
mount -t cifs -o username=reader,password=reader1 //192.168.1.1/model /share/model

磁盘挂载常见错误

1
2
3
4
# [Errno 5] Input/output error
mount -t cifs -o username=think,password=121,vers=2.1 //192.168.1.1/G/Data /mnt/Data
# 添加 vars 参数
mount -t cifs -o username=hhah,password='Xgs@19!gga',vers=2.1 //192.168.1.1/ncep /share/ncep
1
2
3
4
mount: //192.168.1.1/Data$ is write-protected, mounting read-only
mount: cannot mount //192.168.1.1/Data$ read-only
# 安装 cifs-utils
yum -y install cifs-utils

注:如果需要设置开机挂载,在/etc/fstab添加一行配置即可:

1
192.168.1.1:/data/nfs-share /data/share nfs rw,tcp,intr 0 1

然后服务端和客户端都要用enable设置nfs和rpcbind服务开机启动,然后才可以正常挂载

也可以在 rc.local 中添加上方的挂载代码来解决开机自动挂载

取消挂载

1
umount /data/share

防火墙

iptables

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# 指定 ip 开放所有端口
iptables -A INPUT -s 10.76.26.41 -p all -j ACCEPT

# 指定 ip 开放指定协议指定端口
iptables -A INPUT -s 10.76.26.41 -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A OUTPUT -s 10.76.26.41 -p tcp --sport 80 -j ACCEPT
iptables -D INPUT -s 10.76.26.41 -p tcp --dport 80 -j ACCEPT

# 指定端口阻断流量
iptables -A INPUT -p tcp --dport 80 -j REJECT
iptables -t filter -A INPUT -p tcp --dport 80 -j REJECT

iptables -A INPUT -p tcp --dport 80 -j DROP

# 查看规则文件
cat /etc/sysconfig/iptables
# 修改策略
iptables --policy INPUT ACCEPT
# 查看规则和行号
iptables -L -n --line-number
# 保存规则
service iptables save
# 重启
service iptables restart

firewall

1
2
3
4
5
6
7
8
# 查询端口是否开放
firewall-cmd --query-port=8080/tcp
# 永久开放端口(去除--permanent,重启失效)
firewall-cmd --permanent --add-port=80/tcp
# 永久移除端口
firewall-cmd --permanent --remove-port=8080/tcp
# 重新加载规则
firewall-cmd --reload

端口

端口查询

1
netstat -tunlp | grep 3306

查看端口占用及总连接数

查看端口占用

1
2
3
4
# 命令不存在,需要 yum install net-tools
sudo netstat -lnp|grep 8000
sudo ps [pid]
sudo kill pid

查看端口占用及总连接数

1
netstat -n | grep ':22\|Address' && netstat -n | grep :22 | wc -l | awk '{ print "total ssh and sftp connection: "$1 }'

hosts

centos 7

1
2
3
4
5
6
修改 hosts 文件
vim /etc/hosts
添加对应 ip、域名
140.172.38.117 ftp.cdc.noaa.gov
重启网络
systemctl restart network

centos 6

1
2
3
4
5
6
修改 hosts 文件
vim /etc/hosts
添加对应 ip、域名
140.172.38.117 ftp.cdc.noaa.gov
重启网络
service network restart

dns

centos 6

1
2
3
4
5
6
vim /etc/resolv.conf
# 修改 dns 为 114
nameserver 114.114.114.114
nameserver 8.8.8.8
# 重启服务
service network restart

centos 7

1
2
3
4
5
nmcli connection show
# 输出的网卡名为 em1,下方则为 em1,网卡输出为 ens160,下方则为 ens160
nmcli con mod ens160 ipv4.dns "114.114.114.114 114.114.113.113"
nmcli con up ens160
ping www.baidu.com

rpm

rpm 离线安装包

使用 yumdownloader 下载 rpm 包

1
2
3
4
5
6
# 下载 rpm 包
yumdownloader --resolve --destdir=./ nginx
# 安装 rpm 包
rpm -Uvh *.rpm
# 如果存在 conflicts 文件,需要卸载对应依赖或使用
rpm -ivh *.rpm --replacefiles

这里可能会出现文件不是 rpm 格式的问题(文件损坏等情况),可使用 file 命令查看文件属性

进程

进程信息

1
ls -al /proc/PID/

批量杀进程

keyword 是关键字

1
2
ps -ef | grep keyword |awk '{print $2}'|xargs kill -9
kill -9 `ps -ef | grep keyword | awk '{print $2}'`

selinux

1
2
3
4
5
6
7
# 查看 selinux 状态
sestatus
# 临时关闭
setenforce 0
# 永久关闭
vi /etc/selinux/config
SELINUX=disabled

ntp

时间同步暂未使用过

frp

frp 服务为 https://www.natfrp.com/ 提供

使用 token 启动,并输出配置文件

1
/usr/local/frp/frpc_linux_amd64 -f abcedfgh123abcedfgh123:6666 -w

使用配置文件启动

1
nohup /usr/local/frp/frpc_linux_amd64 -c /usr/local/frp/frpc.ini > /usr/local/frp/frp.log 2>&1 &

This blog is under a CC BY-NC-SA 4.0 International License
本文链接:http://mgzu.github.io/2020/01/08/CentOS-Command/