操作系统 : CentOS Linux release 7.6.1810 (Core)
提示信息
bash: ip command not found
解决办法
yum -y install initscripts
# 提示信息
-bash: telnet: command not found
安装
yum install telnet.*
提示信息
-bash: netstat: command not found
需要安装服务
yum install net-tools
提示信息
-bash: zip: command not found
需要安装服务
yum install -y unzip zip
提示信息
-bash: tree: command not found
需要安装服务
yum -y install tree
提示信息
-bash: vim: command not found
需要安装服务
yum install vim
提示信息
-bash: wget: command not found
需要安装服务
yum -y install wget
提示信息
-bash: rz: command not found
或
-bash: sz: command not found
需要安装服务
yum -y install lrzsz
配置 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
原因:
文件使用了 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 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
netstat -lntp
检查 8080 端口被哪个进程占用
netstat -lnp|grep 8080
用来显示处于活动状态的套接字信息。
帮助文档(截取部分常用)
[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
目录
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
修改主机名
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
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
将当前目录,打包为 test.zip 文件
zip -r test.zip ./*
解压 test.zip 文件
unzip test.zip
要把文件解压到指定的目录下,需要用到-d参数。
unzip -d /temp test.zip
后缀名 .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(英文全拼: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包依赖其他包时,即使其他包没有安装,也要安装这个包;
查看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 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
目标 : 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 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
yum install epel-release
查看CPU信息
lscpu
查看内存信息
free -m
查看CPU 核数
cat /proc/cpuinfo | grep name | cut -f2 -d: |uniq -c
-e filename 如果 filename存在,则为真
-d filename 如果 filename 为目录,则为真
说明:用来判断文件、目录是否存在,非常好用!
PS : 记笔记!偶尔忘了来查查! >_<|||