CentOS 7 常用命令&方法

CentOS 7 常用命令&方法

  • 环境说明
  • 命令&方法
    • 错误提示&处理方式
      • bash: ip command not found
      • -bash: telnet: command not found
      • -bash: netstat: command not found
      • -bash: zip: command not found
      • -bash: tree: command not found
      • -bash: vim: command not found
      • -bash: wget: command not found
      • -bash: rz: command not found
      • repomd.xml 文件找不到
      • $'\r': command not found
    • 开/关机
      • 开机自启动
      • 开机自启动(自定义脚本)
      • 关机(安全关机)
      • 重启(安全)
    • 日期&时间
      • 手动
      • 自动同步
    • 目录&文件
      • 查看文档后面几行数据
      • 搜索某个文件里面是否包含字符串
      • 搜索文件
      • vi
      • 文件最后一行插入数据
      • 清空文件内容
      • 显示指定的目录或文件所占用的磁盘空间
    • 文件上传 & 下载
    • 网络
      • 防火墙
      • 查看监听( Listen )的端口(端口占用情况)
        • netstat
        • ss
      • 静态IP设置
      • 修改 hostname
      • 异常处理
        • 域名解析异常
    • 版本发布
      • 软链接
      • jar 启动
      • 环境变量
        • 临时生效(重启则无效)
        • 全局环境变量,对所有用户都会生效
    • 压缩
      • zip
      • tar
    • 服务&软件安装
      • rpm
        • 示例:卸载 openjdk
      • yum
    • 定时任务
    • CentOS 之间,使用密钥实现免密登录
      • 异常处理:找不到 .ssh 目录
    • 用户
      • 切换用户
      • 添加组&用户
    • 安装 epel 源
    • 硬件信息查询
    • Shell
      • if 的 -e,-d

环境说明

操作系统 : 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

-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 : 打开多个文件,依次进行编辑。

文件最后一行插入数据

利用 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 -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

修改 hostname

查看当前主机名

hostname

修改主机名

hostnamectl set-hostname ***

重启生效

sync; sync; reboot

异常处理

域名解析异常

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


版本发布

软链接

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 文件中。

环境变量

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

临时生效(重启则无效)

# 设置环境变量 TEST
export TEST=/etc/
# 测试
echo $TEST

全局环境变量,对所有用户都会生效

# 编辑文件
vi /etc/profile
# 增加配置
TEST=/etc/
export TEST
# 退出文件编辑,另配置生效
source /etc/profile
# 测试
echo $TEST

压缩

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

服务&软件安装

rpm

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

搜索 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 install  xxx

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

yum -y install  xx

卸载

yum remove xxx

定时任务

编辑定时任务

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

安装 epel 源

yum install epel-release

硬件信息查询

查看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 为目录,则为真

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


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

你可能感兴趣的:(Linux,centos,linux,常用方法,常用命令,CentOS,7)