CentOS 7 常用命令&方法

环境说明

操作系统 : CentOS Linux release 7.6.1810 (Core)


命令&方法

错误提示&处理方式

bash: ip command not found

提示信息

bash: ip command not found

解决办法

yum -y install initscripts

-bash: telnet: command not found

# 提示信息
-bash: telnet: command not found

安装

yum install telnet.*

-bash: netstat: command not found

提示信息

-bash: netstat: command not found

需要安装服务

yum install net-tools

-bash: zip: command not found

提示信息

-bash: zip: command not found

需要安装服务

yum install -y unzip zip

获取 rpm 安装包

wget http://www.rpmfind.net/linux/centos/7.9.2009/os/x86_64/Packages/unzip-6.0-21.el7.x86_64.rpm
wget http://www.rpmfind.net/linux/centos/7.9.2009/os/x86_64/Packages/zip-3.0-11.el7.x86_64.rpm

-bash: tree: command not found

提示信息

-bash: tree: command not found

需要安装服务

yum -y install tree

-bash: vim: command not found

提示信息

-bash: vim: command not found

需要安装服务

yum install vim

-bash: wget: command not found

提示信息

-bash: wget: command not found

需要安装服务

yum -y install wget

-bash: rz: command not found

提示信息

-bash: rz: command not found

-bash: sz: command not found

需要安装服务

yum -y install lrzsz

repomd.xml 文件找不到

配置 yum 源的时候,可能会遇到提示 repomd.xml 文件找不到。一般是由于之前配置 yum 源错误导致的。简单直接暴力的方法

cd /etc/yum.repos.d

查看 /etc/yum.repos.d 目录中的哪一个配置生效,并删除错误的配置源
清除缓存

yum clean all     # 清除系统所有的yum缓存
yum makecache     # 生成yum缓存(如果 yum 不正常,这个命令不能正常使用)

yum 就可以正常使用了


$‘\r’: command not found

异常信息:

$'\r': command not found

原因:
文件使用了 Windows 换行符

处理方法

# 安装dos2unix
yum -y install dos2unix
# 转换文件编码
dos2unix test.sh

开/关机

开机自启动

示例: 防火墙

查看是否开机自启动

systemctl is-enabled firewalld.service

结果(开机自启动)

enabled

关闭开机自启动

systemctl disable firewalld.service

运行结果

Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.

确认更改结果

systemctl is-enabled firewalld.service

运行结果

disabled

启动开机自启动

systemctl enable firewalld.service

开机自启动(自定义脚本)

此方法 CentOS 6/7 通用

目录

cd /etc/rc.d

文件

rc.local

文件需要有可执行权限

chmod +x /etc/rc.d/rc.local

文件最后增加内容

# test
sh /root/start.sh

文件 start.sh 内容如下

touch /root/file.txt

确认目录 /root/ 下没有 file.txt 文件,重启测试

sync; sync; reboot

发现目录 /root/ 下增加了 file.txt 文件。

关机(安全关机)

由于 Linux 的运行机制,很多数据是在内存中的。安全起见,关机之前,应强制将内存中的数据同步到硬盘,避免数据丢失。(没用这么方法关机,导致遇到过 GitLab 出问题! 哭死 ~)

sync; sync; shutdown -h now

重启(安全)

类似关机

sync; sync; reboot

日期&时间

手动

查看日期、时间、时区等信息

timedatectl

设置日期&时间

timedatectl set-time "YYYY-MM-DD HH:MM:SS"

设置时区

timedatectl set-timezone Asia/Shanghai

说明 :
CST : 中国标准时间 (China Standard Time)
UTC : 整个地球分为二十四时区,每个时区都有自己的本地时间。在国际无线电通信场合,为了统一起见,使用一个统一的时间,称为通用协调时(UTC, Universal Time Coordinated)。

PS : 手动设置时间的时候,可能会提示 ntp 开启,不允许修改时间。需要关闭 ntp 。

timedatectl set-ntp false

自动同步

CentOS 7 之前采用ntp服务自动同步时间,CentOS 7 推荐使用 chrony 同步时间,ntp 仍然可以使用。(chrony对比ntp说明

安装服务

yum -y install chrony

配置文件(可配置同步的服务器)

/etc/chrony.conf

设置开机启动

systemctl enable chronyd

查看是否设置成功

systemctl list-unit-files | grep enabled | grep chrony

启动

systemctl start chronyd

查看状态

systemctl status chronyd

目录&文件

查看文档后面几行数据

监视 filename 文件的尾部内容(默认10行),刷新显示在屏幕上。退出,按下 CTRL + C 。

tail -f filename

搜索某个文件里面是否包含字符串

命令格式:grep “被查找的字符串” filename
例如:

grep "0101034175" /data/transaction.20170118.log

检索时需要忽略大小写问题,可以使用参数“-i”
命令格式: grep -i “被查找的字符串” *.log
例如:

grep -i error catalina.out

搜索文件

在目录 / 中,搜索文件名字为 filename 的文件

find / -name filename

vi

vi filename : 打开或新建文件,并将光标置于第一行首;
vi +n filename : 打开文件,并将光标置于第 n 行首;
vi + filename : 打开文件,并将光标置于最后一行首;
vi +/pattern filename : 打开文件,并将光标置于第一个与pattern匹配的串处;
vi -r filename : 在上次正用vi编辑时发生系统崩溃,恢复filename;
vi filename…filename : 打开多个文件,依次进行编辑。

# 把abc替换成123
:%s#abc#123#g
:%s/abc/123/g

文件最后一行插入数据

利用 sed 直接在 filename.txt 最后一行加入 message

sed -i '$a message' filename.txt

说明 :
$ 代表的是最后一行;
a 的动作是新增;

清空文件内容

cat /dev/null > filename.txt

显示指定的目录或文件所占用的磁盘空间

说明 :

du [-abcDhHklmsSx][-L <符号连接>][-X <文件>][--block-size][--exclude=<目录或文件>][--max-depth=<目录层数>][--help][--version][目录或文件]
# 示例
# 查看当前目录大小
du -sh
# 查看当前所在目录,各文件夹及文件大小
du -h --max-depth=1 ./

文件上传 & 下载

一般文件上传或者下载,使用 ftp 服务。还有另外一种更快捷的方式: 命令行

说明:
rz 中的 r 意为 received (接收),输入rz时,意为服务器接收文件,即将文件从本地上传到服务器。
sz 中的 s 意为 send (发送),输入sz时,意为服务器要发送文件,既从服务器发送文件到本地,或是说本地从服务器上下载文件。
注意:不论是send还是received,动作都是在服务器上发起的。

输入 rz 会谈出对话框,选择文件即可。可以多选。

下载一个文件:sz filename
下载多个文件:sz filename1 filename2
下载dir目录下的所有文件,不包含dir下的文件夹:sz dir/*

PS : 提示信息不够友好,文件下载成功了但会提示下载错误。


网络

防火墙

查看端口开放情况

firewall-cmd --zone=public --list-ports

开放 80 端口

firewall-cmd --zone=public --add-port=80/tcp --permanent

关闭 80 端口

firewall-cmd --zone=public --remove-port=80/tcp --permanent

命令含义说明:
–zone 作用域
–add-port=80/tcp 添加端口,格式为:端口/通讯协议
–permanent 永久生效

开放/关闭端口,需要重启防火墙

systemctl restart firewalld.service

关闭防火墙(所有端口都开放。不建议~因为不安全!)

systemctl stop firewalld.service

查看监听( Listen )的端口(端口占用情况)

netstat
netstat -lntp

检查 8080 端口被哪个进程占用

netstat -lnp|grep 8080
ss

用来显示处于活动状态的套接字信息。

帮助文档(截取部分常用)

[root@CentOS7 ~]# ss -h
Usage: ss [ OPTIONS ]
       ss [ OPTIONS ] [ FILTER ]
   -n, --numeric       don't resolve service names
   -a, --all           display all sockets
   -l, --listening     display listening sockets
   -t, --tcp           display only TCP sockets

示例,查看 22 端口是否被监听

ss -ntl|grep 22

静态IP设置

目录

cd /etc/sysconfig/network-scripts/

修改文件(文件名称不确定,需要根据具体情况。我的一般为 ifcfg-ens160 )

vi ifcfg-ens*

需要修改的属性如下

ONBOOT=yes
IPADDR=192.168.1.2
NETMASK=255.255.255.0
GATEWAY=192.168.1.1
DNS1=114.114.114.114
DNS2=8.8.8.8

重启网络服务

systemctl restart network

查看修改后的 IP

ip addr

DNS

# 方法一(同静态IP设置中的配置方法)
cd /etc/sysconfig/network-scripts/
vi ifcfg-ens*
# DNS1=114.114.114.114
# DNS2=8.8.8.8
systemctl restart network
# 方法二
[root@localhost ~]# vim /etc/NetworkManager/NetworkManager.conf
# 修改或添加dns=none
[main]
#plugins=ifcfg-rh,ibft
dns=none
# 保存后重启服务
[root@localhost ~]# systemctl restart NetworkManager.service
# 然后修改/etc/resolv.conf文件
[root@localhost ~]# vi /etc/resolv.conf
# Generated by NetworkManager
nameserver 114.114.114.114
nameserver 8.8.8.8
# 测试是否生效
systemctl restart network
cat /etc/resolv.conf

修改 hostname

查看当前主机名

hostname

修改主机名

hostnamectl set-hostname ***

重启生效

sync; sync; reboot

异常处理

域名解析异常

异常:
可以 ping 通 IP 但是域名 ping 不通
原因:
域名解析错误
处理方法:
域名解析异常,需要配置 DNS


版本发布

SELinux

有些软件/项目部署的时候需要关闭 SELinux
请注意:临时关闭 SELinux 可能会导致系统安全性降低,通常建议在了解 SELinux 策略和对系统安全性有充分理解的情况下进行操作

# SELinux 是否开启
sestatus
# 更改 SELinux 配置 - 重启生效
vi /etc/selinux/config
# 更改文件内容 SELINUX=disabled
# 重启生效

# 将 SELinux 模式设置为 Permissive(宽容)模式,在这种模式下,SELinux 策略不会强制执行,但是违规的行为会被记录下来 - 重启失效
setenforce 0
# 查看当前的 SELinux 状态
getenforce
# 显示 Enforcing 表示启用,Permissive 表示宽容模式,Disabled 表示已禁用

软链接

ln -s 软链接源(软链接指向的源头)     目标(新建的软链接)

例如(举例,生产环境不建议这样使用) :
将 nginx 中的配置文件 default.conf 移动到 /root/default.conf

mv /etc/nginx/conf.d/default.conf /root/

配置软连接

ln -s /root/default.conf /etc/nginx/conf.d/80.conf

启动 nginx 发现配置生效

删除软连接

rm -f /etc/nginx/conf.d/80.conf

jar 启动

nohup java -jar ./filename.jar >./logs/stdout.log 2>&1 &

说明 :
nohup : 是 no hang up 的缩写,就是不挂断的意思。
& : 指在后台运行。
nohup COMMAND & : 这样就能使命令永久的在后台执行。
2>&1 : 是将标准错误(2)重定向到标准输出(&1),标准输出(1)再被重定向输入到 stdout.log 文件中。

环境变量

查看环境变量

env

设置环境变量。具体使用哪种形式的配置,需要根据需求来确定。

临时生效(重启则无效)
# 设置环境变量 TEST
export TEST=/etc/
# 测试
echo $TEST
全局环境变量,对所有用户都会生效
# 编辑文件
vi /etc/profile
# 增加配置
TEST=/etc/
export TEST
# 退出文件编辑,另配置生效
source /etc/profile
# 测试
echo $TEST

操作系统版本信息

# Linux
more /etc/os-release
# Red Hat(红帽)或者 CentOS 特有
more /etc/redhat-release

字符集

locale

文件校验

# 计算和校验文件的MD5值
md5sum filename

压缩

zip

将当前目录,打包为 test.zip 文件

zip -r test.zip ./*

解压 test.zip 文件

unzip test.zip

要把文件解压到指定的目录下,需要用到-d参数。

unzip -d /temp test.zip

tar

后缀名 .tar 常用命令

# 从文件 foo 和 bar 创建归档文件
tar -cf archive.tar foo bar
# 展开归档文件 archive.tar
tar -xf archive.tar

后缀名 .tar.gz 常用命令

# 将当前目录压缩为 name.tar.gz 文件
tar -czf name.tar.gz ./*
# 解压后缀名为 .tar.gz 的文件
tar -zxvf filename.tar.gz
# 解压到指定目录
tar -zxvf filename.tar.gz --directory /opt/

服务&软件安装

rpm

rpm(英文全拼:redhat package manager) 原本是 Red Hat Linux 发行版专门用来管理 Linux 各项套件的程序,由于它遵循 GPL 规则且功能强大方便,因而广受欢迎。逐渐受到其他发行版的采用。RPM 套件管理方式的出现,让 Linux 易于安装,升级,间接提升了 Linux 的适用度。

RPM 包命名方式:name-version-release.arch.rpm

搜索 rpmname 是否安装

rpm -qa|grep rpmname

查询一个包是否安装(这里的包名,是不带有平台信息以及后缀名的)

rpm -q rpm包名

安装rpm包

rpm -ivh test.rpm

卸载一个 rpm 包

rpm -e rpmname
# 示例 卸载 python(不推荐删除,会导致 yum 等服务不可用。测试之前请做好备份/镜像。)
# rpm -qa|grep python|xargs rpm -ev --allmatches --nodeps

强制安装文件夹下的所有rpm包

rpm -Uvh *.rpm --nodeps --force

参数说明:
-U : <套件档>或–upgrade<套件档> 升级指定的套件档;
-i : <套件档>或–install<套件档>  安装指定的套件档;
-v :可视化;
-h :显示安装进度;
–force 强制安装,即使覆盖属于其他包的文件也要安装;
–nodeps 当要安装的rpm包依赖其他包时,即使其他包没有安装,也要安装这个包;

示例:卸载 openjdk

查看java安装软件

root@username ~]# rpm -qa|grep java
java-1.8.0-openjdk-headless-1.8.0.171-8.b10.el7_5.x86_64

卸载

rpm -e --nodeps java-1.8.0-openjdk-headless-1.8.0.101-3.b13.el7_2.x86_64

yum

YUM: Yellowdog Update Modifier

仓库及缓存管理

# yum 仓库列表
yum repolist
# yum 仓库配置目录
cd /etc/yum.repos.d/
# 清理缓存
yum clean all
# 生成缓存
yum mackcache

提示是否安装

yum install  xxx

不提示,提示的部分,全部自动填入 y 进行安装

yum -y install  xx

卸载

yum remove xxx
Epel

epel源:https://docs.fedoraproject.org/en-US/epel/
阿里 Epel 源

配置阿里 Epel 源

# yum 仓库配置目录
cd /etc/yum.repos.d/
# 备份
mv epel.repo epel.repo.backup
# 获取阿里 Epel 源
wget -O epel.repo https://mirrors.aliyun.com/repo/epel-7.repo

通过 yum 安装 epel 源

yum install epel-release
更新系统及内核
# 查看内核版本
uname -r
# 更新系统以及内核
yum upgrade
# 仅升级内核
yum install kernel
开发工具安装
# 包组
yum grouplist
# 开发工具包
yum groupinstall "development tools"
# info
yum groupinfo "development tools"

定时任务

编辑定时任务

vi /etc/crontab

文件中有详细说明

SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root

# For details see man 4 crontabs

# Example of job definition:
# .---------------- minute (0 - 59)
# |  .------------- hour (0 - 23)
# |  |  .---------- day of month (1 - 31)
# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# |  |  |  |  |
# *  *  *  *  * user-name  command to be executed

示例 - 普通

59 23 * * * root /root/test.sh

示例 - 有日志输出的定时任务(日志文件包含日期信息)

30 0 * * * root /root/test.sh >> /root/logs/log_name_$(date +\%Y-\%m-\%d).log 2>&1

保存生效

crontab /etc/crontab

查看任务

crontab -l

CentOS 之间,使用密钥实现免密登录

目标 : A 免密登录并操作 B;
服务器A和B的操作系统 : CentOS Linux release 7.6.1810 (Core)

A 操作,生成秘钥

ssh-keygen

密钥文件,所在 A 目录

cd ~/.ssh

A 生成的密钥文件

id_rsa  id_rsa.pub

A 操作,移动 id_rsa.pub 文件到 B ( B_IP 需要替换)

scp ~/.ssh/id_rsa.pub B_IP:~/.ssh/

B 操作,公钥导入

cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

A 操作,测试

ssh B_IP

结果

[root@A ~]# ssh 192.1.1.2
Last login: Wed Dec 30 13:43:29 9527 from 192.1.1.4
[root@B ~]# 

取消免密登录

B 操作

cat /dev/null > authorized_keys

异常处理:找不到 .ssh 目录

原因分析:
没有运行过 ssh 命令

解决方法:

ssh localhost

用户

切换用户

su [选项] [-] [用户 [参数]... ]

- :以 login-shell 方式进行登录
不加 - :以 no-login-shell 方式进行登录
-c:只进行一次在该用户下使用命令

示例

su - oracle
su oracle
su - oracle -c pwd

添加组&用户

# 添加用户组
groupadd es
# 添加用户 -g 指定组 -p 密码
useradd es -g es -p password
# 删除用户
userdel es

sudoers

参考文档:https://zhuanlan.zhihu.com/p/632737024?utm_id=0

# 创建 test 用户
useradd -m -s /bin/bash test
# 设置密码
passwd test
# 推荐使用 visudo 进行编辑,也可以使用 vi 但是没有校验功能
visudo
# 找到
#root    ALL=(ALL:ALL) ALL
# 下面增加
# 增加用户
#test    ALL=(ALL)       ALL
# 增加用户,免密登录
#test    ALL=(ALL)       NOPASSWD:ALL
# 校验
visudo -c -f /etc/sudoers

说明:通过此操作后, test 用户就可以进行 sudo 相关操作了!

硬件信息查询

查看CPU信息

lscpu

查看内存信息

free  -m

查看CPU 核数

cat /proc/cpuinfo  | grep name | cut -f2 -d: |uniq -c

Shell

if 的 -e,-d

-e filename 如果 filename存在,则为真

-d filename 如果 filename 为目录,则为真

说明:用来判断文件、目录是否存在,非常好用!


文件数

# 查看 系统所有进程能够打开的文件数
cat /proc/sys/fs/file-max

# 修改
vim /etc/sysctl.conf
fs.file-max = 65535600

#修改
vi /etc/security/limits.conf
# 文件最后 追加
*         hard    nofile      500000
*         soft    nofile      500000
root      hard    nofile      500000
root      soft    nofile      500000

# 生效
sysctl -p

PS : 记笔记!偶尔忘了来查查! >_<|||

  • 0
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值