# 目录结构

Linux文件系统是采用层级式的树状目录结构,根目录是"/"

/bin         //二进制文件、命令
/sbin        //超级命令,只有root用户可以使用
/boot        //存放引导文件、系统内核
/dev         //类似于Windows的设备管理器,把所有的硬件用文件的形式存储
/etc         //所有的系统管理所需的配置文件和子目录
/home        //普通用户的根目录
/root        //root用户的根目录
/lib         //系统开机所需的最基本的动态连接共享库,几乎所有的应用程序都需要用到这些共享库
/mnt         //外部存储的默认挂载点、临时挂载点
/opt         //第三方软件安装的位置
/tmp         //临时存放文件的位置
/usr         //存放用户软件,用户的很多应用程序和文件都放在这个目录下
/var         //习惯将经常被修改的目录存放在这,如各种日志
/lost+found  //隐藏目录,一般情况为空,当系统非法关机后会存放一些文件
/proc        //虚拟目录,存放内存信息,进程,服务信息,不能动这个文件
/srv         //service的缩写,存放一些服务启动之后需要提取的数据,不能动这个文件
/sys         //安装了内核中新出现的一个文件系统sysfs,不能动这个文件

# 当前目录

[root@sylone ~] //此处的波浪线代表的当前目录,root用户为/root,普通用户为/home

# 常用命令

# 列出文件列表:ls、ll

ls -a //列出所有文件,包括隐藏文件(以.开头的文件)
ls -l //列出文件及文件夹的详细信息,权限、用户、时间等,可以简写为ll

ll -a / //列出根目录下的所有文件

# 目录切换:cd

cd .. //退出到上级目录
cd -  //返回上次所在的目录
cd ~  //退回到根目录

cd /var  //切换到var目录

# 创建目录和移除目录:mkdir、rmdir

mkdir -p aaa/bbb //创建多级目录(即使没有aaa目录也可以)

# 浏览文件:cat、more、less、tail

cat install.log       //查看文件的所有内容
more installl.log     //一次只显示一屏,按回车看下一行,按空格显示下一屏,按q退出
less install.log      //功能同more,按键盘的上下键还可以滚动查看
tail -10 install.log  //只显示最后的10行,例如日志文件
tail -f  install.log  //可以动态的查看文件的更新,ctrl+c即可退出

# 拷贝、剪切:cp、mv

cp anaconda-ks.cfg aaa        //拷贝文件anaconda-ks.cfg到aaa
cp anaconda-ks.cfg aaa/a.txt  //拷贝文件anaconda-ks.cfg到aaa,并保存为a.txt
mv a.txt /root/bb             //剪切文件a.txt到/root/bb目录下
mv a.txt /root/bb/c.txt       //剪切文件a.txt到/root/bb目录下,并保存为c.txt

# 删除文件:rm(不加参数只能删除文件,不能删除文件夹)

rm -r bb    //删除文件夹
rm -rf bb   //删除文件,不询问
rm -rf /*   //删除所有文件

# 压缩、解压缩:tar(默认只打包不压缩)

最好切换到当前目录再操作

tar -cvf xxx.tar aaa            //打包文件夹aaa为xxx.tar
tar -zcvf xxx.tar.gz aaa        //打包并压缩文件夹aaa为xxx.tar.gz
tar -xvf xxx.tar                //解压打包文件到当前目录
tar -zxvf xxx.tar.gz            //解压压缩的文件xxx.tar.gz到当前目录
tar -zxvf xxx.tar.gz -C ./cc    //解压压缩的文件xxx.tar.gz到当前目录下的cc文件夹

# 查找文件:find

find / -name ins*   //查找文件名是ins开头的文件

# 查找文件内容:grep

//查找address字符
grep address /root/apache-tomcat-7.0.57/logs/catalina.2022-10-30.log
//高亮显示
grep address /root/apache-tomcat-7.0.57/logs/catalina.2022-10-30.log --color

# 管道:|

可以将一个命令的输出作为另一个命令的输入

ls --help | more      //分页显示帮助信息
ps -ef | grep java    //查看正在进行的进程,并通过管道的方式查找java相关的进程

# 重定向输出

任何命令,只要在控制台上有输出都可以这样操作

cat bb.txt > aa.txt   //会把bb的内容放到aa中,再次执行会被覆盖
cat bb.txt >> aa.txt  //会把bb的内容放到aa中,再次执行会被追加
ifconfig >> aa.txt    //会把ifconfig的配置信息追加到aa

# 进程管理

ps -ef                //查看正在进行的进程
ps -ef | grep java    //查看正在进行的进程,并通过管道的方式查找java相关的进程
kill -9  进程ID       //强制关闭进程                    

# 其他常见命令

pwd                  //显示当前所在的目录
passwd               //修改密码
df -h                //查看磁盘使用
free –m              //查看内存使用
getconf LONG_BIT     //查看系统是32位还是64位
clear                //清屏
文件名的一部分 + tab   //快速输出文件名

# 权限命令

# 文件权限

10个字符:drwxr-xr-x,第一个是文件类型,后面每3个为一组

  • 文件的类型
    • -表示文件
    • d表示文件夹
    • l表示链接(类似快捷方式)
  • 当前用户具有该文件的权限
    • r:read
    • w:write
    • x:excute
  • 当前组内其他用户具有该文件的权限
  • 其他组内的用户具有该文件权限

# 修改文件权限

chmod u=rwx,g=rx,o=rx a.txt
r:4、w:2、x:1
chmod 755  //每个数字代表一组权限

# VIM编辑器

  • 三种模式:命令(默认)、插入、底行模式
切换到命令模式: 按Esc键
切换到插入模式: 按i(在当前位置前插入)、o(在当前位置后插入)、a(在当前行后插入一行)键
切换到底行模式: 按:(冒号) wq(保存退出) q!(不保存退出)
  • 编辑不存在的文件时会自动创建该文件
  • 在编辑页面查找内容
:/8080  //查找8080字符

# 网络操作

# 主机配置

hostname         //查看主机名
hostname sylone  //修改主机名为sylone(重启后无效)
//如果想要永久生效,可以修改/etc/sysconfig/network文件

# IP地址配置

ifconfig                     //查看网络配置
ifconfig eth0 192.168.12.22  //修改IP地址(重启后无效)

//如果想要永久生效,修改/etc/sysconfig/network-scripts/ifcfg-eth0文件
DEVICE=eth0                 //网卡设备名称
HWADDR=00:0C:29:FE:1A:09    //网卡MAC地址
TYPE=Ethernet              //网卡类型为以太网

ONBOOT=yes                 //启动时是否激活 yes | no
BOOTPROTO=static           //协议类型
IPADDR=192.168.1.90        //网络IP地址
NETMASK=255.255.255.0      //网络子网地址
GATEWAY=192.168.1.1        //网关地址
BROADCAST=192.168.1.255    //广播地址

# 解决ping: www.baidu.com: Name or service not known

需要在2个地方添加DNS

//修改/etc/sysconfig/network-scripts/ifcfg-eth0
DNS1=8.8.8.8
DNS2=114.114.114.114

//修改/etc/resolv.conf
nameserver 8.8.8.8
nameserver 114.114.114.114

# 本地域名映射

/etc/hosts文件用于在通过主机名进行访问时做IP地址解析用
相当于windows的c:\windows\system32\drivers\etc中的hosts文件

# 网络服务管理

service network status    //查看网络服务状态
service network stop      //停止网络服务
service network start     //启动网络服务
service network restart   //重启网络服务

netstat -nltp      //查看系统中网络进程的端口监听情况

# 防火墙设置

service iptables status    //查看网防火墙状态
service iptables stop      //关闭防火墙
service iptables start     //启动防火墙
chkconfig iptables off     //禁止防火墙自启

//防火墙的配置文件/etc/sysconfig/iptables来控制本机出入访问的行为
//打开11211端口
iptables -A INPUT -p tcp --dport 11211 -j ACCEPT
iptables -A OUTPUT -p tcp --sport 11211 -j ACCEPT

# 软件安装

# 二进制发布包

软件已经针对具体平台编译打包发布,只要解压,修改配置即可,缺点是不能兼容所有平台

# RPM包

软件已经按照redhat的包管理工具规范RPM进行打包发布,只需要获取到相应的软件RPM包,然后用RPM命令进行安装,此方式可以兼容大多数Linux平台,但是不能安装所依赖的包

# Yum在线安装

软件已经以RPM规范打包,但发布在了网络上,可用yum在线安装,并且会自动解决安装过程中库依赖的问题,需要有网络的支撑

# 源代码编译安装

软件以源代码的形式发布,获取到源代码工程后用相应开发工具进行编译打包部署

# 安装JDK

# 查看Linux是否有安装JDK

Java-version
rpm -qa | grep jdk                          //查看已安装的JDK
rpm -e --nodeps xxx(xxx代表删除的文件全名)  //卸载命令

# 在usr目录下新建Java目录,然后将下载的JDK拷贝到这个新建的Java目录中

tar -zxvf jdk-18_linux-x64_bin.tar.gz        //解压

# 配置环境变量

vim /etc/profile

//在尾部加上
export JAVA_HOME=/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.91.x86_64
export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$PATH:$JAVA_HOME/bin

//保存退出后使用命令更新配置
source /etc/profile

# 安装MySQL

# 查看是否已经安装Mysql

rpm -qa | grep mysql       //查看是否已经安装 Mysql
rpm -e 文件名               //卸载命令

# 下载解压

下载mysql (opens new window) 下载mysql

tar  -xvf  MySQL-5.6.35-1.linux_glibc2.5.x86_64.rpm-bundle.tar   //解压

查看解压之后的文件:

MySQL-server-5.6.35-1.linux_glibc2.5.x86_64.rpm
MySQL-client-5.6.35-1.linux_glibc2.5.x86_64.rpm      

MySQL-shared-5.6.35-1.linux_glibc2.5.x86_64.rpm
MySQL-devel-5.6.35-1.linux_glibc2.5.x86_64.rpm       

MySQL-shared-compat-5.6.35-1.linux_glibc2.5.x86_64.rpm
MySQL-embedded-5.6.35-1.linux_glibc2.5.x86_64.rpm    

MySQL-test-5.6.35-1.linux_glibc2.5.x86_64.rpm

其中server和client就是我们需要安装的rpm包

# 安装mysql-server

rpm -ivh  MySQL-server-5.6.35-1.linux_glibc2.5.x86_64.rpm --nosignature
//注意:如果报如下错误,需要加上 --nosignature
warning: MySQL-server-5.6.35-1.linux_glibc2.5.x86_64.rpm: Header V3 DSA/SHA1 Signature
key ID 5072e1f5: NOKEY
//如果没有报错,可以不用加 --nosignature

# 安装mysql-client

rpm -ivh  MySQL-client-5.6.35-1.linux_glibc2.5.x86_64.rpm   --nosignature   (同上)

# 安装redis

Redis端口:6379 查看状态:service redis status
1、添加redis库
由于CentOS官方yum源里面没有Redis,这里我们需要安装一个第三方的yum源,这里用了Fedora的epel仓库:
yum install epel-release

2、安装
yum install redis

3、启动
systemctl start redis

4、配置
vim /etc/redis.conf
注释掉 bind 127.0.0.1protected-mode no 否则远程连接可能会报错
修改密码: 
找到 #requirepass foobared 打开注释更改密码 
如:requirepass 123456

5、重启redis
systemctl restart redis

6、开机启动
systemctl daemon-reload 
systemctl start redis.service 
systemctl enable redis.service

# 定时任务

  • 第一步:编写数据库备份脚本database_mysql_shell.sh,目录: /root/database_mysql_shell.sh
#!/bin/bash
DATE=`date +%Y%m%d%H%M`                #every minute
DATABASE=springboot-admin              #database name
DB_USERNAME=root                       #database username
DB_PASSWORD="mysql"                    #database password
BACKUP_PATH= /var/databackup          #backup path
#backup command
/usr/bin/mysqldump -u$DB_USERNAME -p$DB_PASSWORD -h 127.0.0.1 -R --opt $DATABASE | 
gzip > ${BACKUP_PATH}\/${DATABASE}_${DATE}.sql.gz
#just backup the latest 5 days
find ${BACKUP_PATH} -mtime +5 -name "${DATABASE}_*.sql.gz" -exec rm -f {} \;
  • 第二步:给脚本授权
chmod +x database_mysql_shell.sh
  • 第三步:编写定时备份任务 输入如下命令:
crontab –e   // crontab -r   删除任务  crontab -l    显示任务

在页面中编写如下内容:

00 3 * * * ./etc/profile;/root/database_mysql_shell.sh

可实现每天凌晨三点自动执行第一步编写的脚本,备份mysql数据库到/backup/mysqldata, 且只保留最近5天的数据库备份。

# centos linux 下 crontab -e 命令插入及保存

查看crontab服务状态:service crond status
启动crontab服务:service crond start
开机自启动:systemctl enable crond
输入 crontab -e
按下 a 键进入到编辑模式
输入0 */1 * * * /home/work/start-service.sh  */5 * * * * curl http://www.aa.cn 定时访问网页
同时按下 ctrl+c 退出编辑模式
按下 shift+: 输入 wq 退出 crontab
使用命令 crontab -u root -l 可以查看当前定时任务
测试任务是否执行:tail -f /var/log/cron
输入该文件的绝对路径/root/database_mysql_shell.sh就可执行该文件
注意sh文件格式:
查看文件的format格式:
用vi命令打开文件vi database_mysql_shell.sh
在vi命令模式中使用 :set ff 命令  可以看到改文件的格式为dos
使用命令:set ff=unix   执行完后再通过set ff命令查看文件格式

# curl命令

curl(CommandLine Uniform Resource Locator 官网 (opens new window)),即在命令行中利用URL进行数据或者文件传输。它是一款强大的http命令行工具,支持文件的上传和下载,是综合传输工具,习惯称curl为下载工具

//获取所有curl命令用法及描述
curl -h

//获取该网址的文本信息
curl www.baidu.com

//获取该网址的文本信息以及协议头部信息
curl -i www.baidu.com

//仅返回协议头部信息
curl -l www.baidu.com

//下载文件,O大写
curl -O url

//下载文件并重命名,o小写
curl -o rename url

//使用代理获取网页文本信息
curl -x 127.0.0.1:8080 www.google.com

//使用post模拟json格式请求接口
//X指定请求方式,header 指定请求头部信息,data 指定json请求体数据内容
curl -X POST --header "Content-Type:application/json" --data "{}" url
//示例
curl --header "Content-Type: application/json" \
-X POST \
--data '{"text":"germany"}' \
https://labs.tib.eu/falcon/api?mode=short

# 硬盘分区、挂载

刚刚在腾讯云买了一台服务器,刚买的服务器的数据盘都是需要自己来分区的,下面就记录一下操作。

  • 查询出增加的硬盘,使用fdisk –l下图中有影射的是已经存在的,看到最后一块是没有影射的也是自己新添加上的硬盘。
    查询出增加的硬盘
  • 硬盘分区。新添加的硬盘默认是不能使用的,需要先进行分区,然后再格式化才能使用。分区使用fdisk命令进行分区。分区的步骤在下图中会进行清晰的标识。分区号和起始扇区都直接enter按默认即可。
    硬盘分区
  • 执行命令 partprobe,将新的分区表变更同步至操作系统。
  • 执行命令 fdisk - l ,查看新建分区的详细信息。
    查看新建分区的详细信息
  • 将新建分区文件系统设为系统所需格式 mkfs -t ext4 /dev/xvde1 格式化需要等待一段时间,请观察系统运行状态,不要退出。
    将新建分区文件系统设为系统所需格式
  • 执行以下命令。 mkdir //新建挂载点
    mkdir /XC //以新建挂载点“/XC”为例
    mount /dev/xvde1 挂载点 //执行命令,将新建分区挂载到新建的挂载点下
    mount /dev/xvde1 /XC //以挂载新建分区至“/XC”为例
    df –TH //执行命令,查看挂载结果
  • 设置开机自动挂载磁盘 执行如下命令,查询磁盘分区的UUID。
    blkid 磁盘分区
    以查询磁盘分区“/dev/xvde1”的UUID为例:
    blkid /dev/xvde1
    回显类似如下信息:
    设置开机自动挂载磁盘
    通过vim编辑`/etc/fstab
    在末尾增加一行,保存
    UUID=3677f34f-945e-44e3-9ba9-aa9f1ece2799 /XC ext4 defaults 0 2
  • 重启服务器 reboot,通过命令df -TH查看磁盘信息