基础命令
- 关机
poweroff
- 重启
reboot
- 查看磁盘用量
df -lh
- 查看 XXX 文件路径
rpm -ql XXX | cat -n
- 查找文件 - 查找文件
find . | xargs grep -ri 'content'
- 查找文件 - 只显示文件名称
find . | xargs grep -ril 'content'
- 查看系统版本
cat /etc/redhat-release
rpm -q centos-release
- 查看实时日志
tail -f logs/catalina.out
CentOS7 防火墙开启端口
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| // 查看开放的端口 firewall-cmd --list-ports
// 开放端口 firewall-cmd --zone=public --add-port=80/tcp --permanent
// 移除开放端口 firewall-cmd --zone=public --remove-port=80/tcp --permanent
// 重启防火墙 systemctl start|stop|restart firewalld
// 使配置生效 firewall-cmd --reload
// 开机自启 systemctl enable firewalld
|
yum 命令
参数说明
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 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
| -q 静默执行 -t 忽略错误 -R[分钟] 设置等待时间 -y 自动应答 yes --skip-broken 忽略依赖问题 --nogpgcheck 忽略 GPG 验证
自动搜索最快镜像插件: yum install yum-fastestmirror 安装 yum 图形窗口插件: yum install yumex 查看可能批量安装的列表: yum grouplist
1 安装 yum install 全部安装 yum install package1 安装指定的安装包 package1 yum groupinsall group1 安装程序组 group1
2 更新和升级 yum update 全部更新 yum update package1 更新指定程序包 package1 yum check-update 检查可更新的程序 yum upgrade package1 升级指定程序包 package1 yum groupupdate group1 升级程序组 group1
3 查找和显示 yum info package1 显示安装包信息 package1 yum list 显示所有已经安装和可以安装的程序包 yum list package1 显示指定程序包安装情况 package1 yum groupinfo group1 显示程序组 group1 信息 yum search string 根据关键字 string 查找安装包
4 删除程序 yum remove package1 删除程序包 package1 yum groupremove group1 删除程序组 group1 yum deplist package1 查看程序 package1 依赖情况
5 清除缓存 yum clean packages 清除缓存目录下的软件包 yum clean headers 清除缓存目录下的 headers yum clean oldheaders 清除缓存目录下旧的 headers yum clean, yum clean all (= yum clean packages; yum clean oldheaders) 清除缓存目录下的软件包及旧的 headers
|
使用 yum 命令报错
CentOS 下 yum 命令出现Loaded plugins: fastestmirror
1 2 3 4 5 6 7 8 9 10
| // 修改插件的配置文件 vim /etc/yum/pluginconf.d/fastestmirror.conf 将 enabled=1 改为 enabled=0
// 修改 yum 的配置文件 vim /etc/yum.conf 将 plugins=1 改为 plugins=0
// 重启 reboot
|
基础环境
安装 vim
vim 是从 vi 发展出来的一个文本编辑器。
安装 lrzsz
lrzsz 是一款在 linux 里可代替 ftp 上传和下载的程序。
安装 wget
wget 是一个从网络上自动下载文件的自由工具,支持通过 HTTP、HTTPS、FTP 三个最常见的 TCP/IP 协议 下载,并可以使用 HTTP 代理。”wget” 这个名称来源于 “World Wide Web” 与 “get” 的结合。
安装 SSH
安装
使用 SSH 远程登陆 linux
1 2 3 4 5 6 7 8
| vim /etc/ssh/sshd_config
// 修改以下配置 PermitRootLogin yes PasswordAuthentication yes
// 保存并退出 :wq
|
查看 SSH 状态
1
| service sshd start|stop|status
|
查看是否开启 SSH
设置开机运行
1 2 3
| chkconfig sshd on OR systemctl enable sshd.service
|
安装 Nginx
安装源
需要先把 Nginx 安装源添加到 yum 库中
1
| rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
|
安装 Nginx
1 2 3
| // 默认安装路径 /etc/nginx // 默认静态文件地址:/usr/share/nginx yum install -y nginx
|
启动 Nginx
1 2 3 4 5 6
| /usr/sbin/nginx -c /etc/nginx/nginx.conf
systemctl start nginx systemctl stop nginx // 开机自启 systemctl enable nginx
|
查看是否可以访问
JDK
测试 java 环境
如果需要删除已安装的 jdk 版本
1 2 3 4 5
| yum remove XXX
// 例如 rpm -qa | grep jdk yum -y remove java-1.8.0-openjdk-headless-1.8.0.65-3.b17.el7.x86_64
|
yum 安装
查看可使用 yum 命令安装的 java 版本
1
| yum search java | grep -i --color JDK
|
选择一个 jdk 版本进行安装
1
| yum install java-1.8.0-openjdk-devel.x86_64
|
官网安装
官网下载,并安装
1 2 3 4
| tar -zxvf jdk-8u101-linux-x64.tar.gz -C /usr/local/java/ OR mv jdk-8u101-linux-x64.tar.gz tar -zxvf /usr/local/java/
|
/etc/profile 文件末尾添加
1 2 3 4 5 6
| vim /etc/profile
export JAVA_HOME=/usr/local/java/jdk1.8.0_101 export JRE_HOME=${JAVA_HOME}/jre export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib export PATH=${JAVA_HOME}/bin:$PATH
|
使 /etc/profile 生效
安装完成
如果安装完成(yum 安装和官网安装任选其一),则可通过 java -version
查看安装好的 jdk 版本
1 2 3 4
| [root@localhost /]# java -version openjdk version "1.8.0_151" OpenJDK Runtime Environment (build 1.8.0_151-b12) OpenJDK 64-Bit Server VM (build 25.151-b12, mixed mode)
|
MySQL
设置 yum 源
直接给 yum 安装 mysql 源
1
| rpm -Uvh https://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm
|
手动设置
获取 mysql YUM 源
1
| wget https://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm
|
安装 MySQL 源
1
| yum -y localinstall mysql57-community-release-el7-11.noarch.rpm
|
安装 MySQL
1
| yum -y install mysql-server
|
如果出现 requested datatype primary not available
异常,需要执行一下
- yum 安装的 MySQL 地址:
usr/local/mysql/
- 数据库地址:
var/lib/mysql
- 配置文件:
cat /etc/my.cnf
配置 MySQL
启动 MySQL 服务
设置开机启动
1 2
| systemctl enable mysqld systemctl daemon-reload
|
修改 root 本地登录密码
mysql 安装完成之后,在/var/log/mysqld.log
文件中给 root 生成了一个临时的默认密码。
1 2 3
| grep 'temporary password' /var/log/mysqld.log OR vim /var/log/mysqld.log
|
登录
1 2
| // 密码输入刚刚查询到的临时密码 mysql -u root -p
|
修改密码
使用临时密码登录,首选要修改密码,不然会报错。
1 2 3 4 5 6
| // mysql5.7 默认密码策略要求密码必须是大小写字母数字特殊字母的组合,至少 8 位 // 修改密码为 Root@123
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'Root@123';
Query OK, 0 rows affected (0.00 sec)
|
创建用户并分配权限
1 2 3 4 5 6
| select host,user from mysql.user; create user muycode identified by 'Muycode@123';
GRANT ALL PRIVILEGES ON mysql.* TO 'muycode'@'%' IDENTIFIED BY 'Muycode@123' WITH GRANT OPTION; FLUSH PRIVILEGES;
|
设置允许远程登录
MySQL 默认不允许远程登录,我们需要设置下,并且防火墙开放 3306 端口;
1 2 3 4 5 6
| mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'Root@123' WITH GRANT OPTION;
Query OK, 0 rows affected, 1 warning (0.01 sec)
mysql> exit; Bye
|
开放防火墙端口
1 2 3 4 5 6 7 8
| // 查看开放的端口 firewall-cmd --list-ports
// 开放端口 firewall-cmd --zone=public --add-port=3306/tcp --permanent
// 使配置生效 firewall-cmd --reload
|
配置默认编码为 utf8
修改 /etc/my.cnf
配置文件,在 [mysqld] 下添加编码配置,如下所示:
1 2 3 4 5 6 7 8 9 10
| // 编辑 vim /etc/my.cnf
// 增加以下配置 [mysqld] character_set_server=utf8 init_connect='SET NAMES utf8'
// 重启 msyql 服务 systemctl restart mysqld
|
查看下编码
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
| mysql> show variables like '%character%';
+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | utf8 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | utf8 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
|
查看一下是否大小写敏感
1 2 3 4 5 6 7 8
| mysql> show variables like "%case%"; +------------------------------------+-------+ | Variable_name | Value | +------------------------------------+-------+ | lower_case_file_system | OFF | | lower_case_table_names | 1 | | validate_password_mixed_case_count | 1 | +------------------------------------+-------+
|
参数解释
lower_case_table_names = 0
区分大小写(即对表名大小写敏感)
lower_case_table_names = 1
不区分大小写(即对表名大小写不敏感)
lower_case_file_system
ON 说明对文件名的大小写不敏感,OFF 表示敏感
修改方式,在 mysql 配置文件的 [mysqld] 中,添加以下代码
1 2 3 4 5
| vim /etc/my.cnf
// 添加以下配置 [mysqld] lower_case_table_names = 1
|
MySQL 定时备份
定时备份脚本
创建备份文件 /usr/local/mysql/bakmysql.sh
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 26 27 28 29
| #!/bin/bash # Name:bakmysql.sh # This is a ShellScript For Auto DB Backup and Delete old Backup
# Database info DB_USER="root" #mysql login name DB_PASS="Root@123" #password DB_HOST="localhost" #db_address DB_NAME="muycode" #db_name DB_ZFBM="--default-character-set=utf8" #character # DB_TABLE="exam_quest_bank" #table name
# Others vars BIN_DIR="/usr/bin" #the mysql bin path BCK_DIR="/home/mysql_backup" #the backup file directory DATE=`date +%F`
#--skip-lock-tables zg backup #$BIN_DIR/mysqldump -u $DB_USER -p$DB_PASS $DB_ZFBM $DB_NAME $DB_TABLE | gzip > $BCK_DIR/db_$DATE.sql.gz
#data beifen #$BIN_DIR/mysqldump --opt -u$DB_USER -p$DB_PASS -h$DB_HOST $DB_ZFBM $DB_NAME | gzip > $BCK_DIR/db_$DATE.sql.gz
#sql back $BIN_DIR/mysqldump --opt -u$DB_USER -p$DB_PASS -h$DB_HOST $DB_ZFBM $DB_NAME $DB_TABLE > $BCK_DIR/db_$DATE.sql
# delete history find $BCK_DIR -name "db_*.sql" -type f -mtime +7 -exec rm {} \; > /dev/null 2>&1 #find $BCK_DIR -name "db_*.gz" -type f -mtime +3 -exec rm {} \; > /dev/null 2>&1
|
脚本说明
- $BIN_DIR mysql 备份地址
- $DB_USER 数据库用户名
- $DB_PASS 数据库密码
- $DB_HOST 数据库地址(IP 或者是 localhost 之类的)
- $DB_ZFBM 字符集编码设置(这个很关键,解决导出文件中中文乱码)
- $DB_NAME 数据库名称
- $DB_TABLE 要备份的表名(如果只对单一表进行备份,可以加此字段,全库备份的可以省略掉)
- $BCK_DIR/db_$DATE.sql 备份的地址和备份文件名称
脚本附加权限
验证脚本是否正确
如果脚本没问题,会在 /home/mysql_backup
生成备份文件。
定时删除备份数据库
1
| find $BCK_DIR -name "db_*.sql" -type f -mtime +7 -exec rm {} \; > /dev/null 2>&1
|
脚本说明
-type f
表示查找普通类型的文件,f 表示普通文件。
-mtime +7
按照文件的更改时间来查找文件,+3 表示文件更改时间距现在 3 天以前;如果是 -mmin +5 表示文件更改时间距现在 5 分钟以前。
-exec rm {} \;
表示执行一段 shell 命令,exec 选项后面跟随着所要执行的命令或脚本,然后是一对儿{},一个空格和一个,最后是一个分号。
/dev/null 2>&1
把标准出错重定向到标准输出,然后扔到 /DEV/NULL 下面去。通俗的说,就是把所有标准输出和标准出错都扔到垃圾桶里面;其中的 & 表示让该命令在后台执行。
编辑定时任务列表
1 2
| # 每天早上 4:00:00 执行 00 04 * * * /bin/sh /usr/local/mysql/bakmysql.sh
|
crontab 配置文件格式如下
查看设置的定时任务是否成功
crontab 基本命令
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| # 重启 /bin/systemctl restart crond.service # 开启 /bin/systemctl start crond.service # 停止 /bin/systemctl stop crond.service # 重载 /bin/systemctl reload crond.service # 状态 /bin/systemctl status crond.service
|
CentOS 整机备份
目的备份所有的目录。以 root 权限在”/“目录执行备份命令。
备份命令,打包一个备份文件centos7_backup.tgz
1
| # tar cvpzf centos7_backup.tgz / --exclude=/proc --exclude=/centos7_backup.tgz --exclude=/mnt --exclude=/sys
|
恢复命令,把备份文件拷贝到根分区, 然后执行命令。
警告:这会把你分区里所有文件替换成压缩文档里的文件!
1
| # tar xvpfz centos7_backup.tgz -C /
|
重新创建你剔除的目录
1 2 3
| # mkdir proc # mkdir mnt # mkdir sys
|
执行以下命令再重启
1 2
| # restorecon -Rv / # reboot
|
Docker
CentOS 系统内核版本
Docker 要求 CentOS 系统的内核版本高于 3.10 ,查看本页面的前提条件来验证你的 CentOS 版本是否支持 Docker 。
卸载旧版本
1
| yum remove docker docker-common docker-selinux docker-engine
|
安装需要的软件包
yum-util 提供 yum-config-manager 功能,另外两个是 devicemapper 驱动依赖的
1
| yum install -y yum-utils device-mapper-persistent-data lvm2
|
设置 yum 源
1
| yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
|
查看仓库中 docker 版本
选择特定版本安装
1
| yum list docker-ce --showduplicates | sort -r
|
安装 docker
开机启动
1 2
| $ systemctl start docker $ systemctl enable docker
|
1 2 3
| systemctl start|stop|restart docker service docker stop service docker start
|
验证
安装是否成功(有 client 和 service 两部分表示 docker 安装启动都成功了)
容器自启
使用 restart policy restart policy 在使用 docker run 启动容器时通过–restart 标志指定,这个标志有多个 value 可选,不同的 value 有不同的行为,如下表所列:
Flag |
Description |
no |
不自动重启容器. (默认 value) |
on-failure |
容器发生 error 而退出 (容器退出状态不为 0) 重启容器 |
unless-stopped |
在容器已经 stop 掉或 Docker stoped/restarted 的时候才重启容器 |
always |
在容器已经 stop 掉或 Docker stoped/restarted 的时候才重启容器 |
举个例子:下面的命令启动一个 Redis 容器,当 Redis 容器停止后或者 Docker 被重启时,Redis 容器都会重启。
1
| $ docker run -dit --restart unless-stopped redis
|
NTFS 类型 U 盘挂载
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| # 查看 NTFS 类型的 U 盘,找到 U 盘 fdisk -l | grep NTFS # 或者查看所有磁盘 fdisk -l
# 新建挂载点 mkdir /mnt/usb # 进行 U 盘挂载 mount -t ntfs-3g /dev/sdb1 /mnt/usb
# 通过设备名取消挂载 umount -v /dev/sda1 # 或者通过挂载点 umount -v /mnt/usb
# 查看占用 fuser -m -v -i -k /mnt/usb/
|