Linux基础

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


一、虚拟机安装

1 创建虚拟机

创建新的虚拟机 -> 自定义 -> 默认 -> 稍后安装操作系统 -> 选择操作系统和版本 -> 设置虚拟机名称和位置 -> 处理器配置(默认) -> 虚拟机内存(默认) -> 网络连接:选择NAT -> I/O控制器类型(默认) -> 磁盘类型(默认) -> 创建新虚拟磁盘 -> 指定磁盘容量 -> 磁盘文件(默认) -> 完成

2 虚拟机系统安装

CD/DVD设置系统IOS镜像文件->开启虚拟机->安装->设置硬盘->i will configure partitioning->添加引导分区 /boot 256m->添加分区 swap 2048m->添加分区 /->在network&hostname中修改主机名->install

二、配置常见参数

1 网络

1.查看自己虚拟网卡地址
编辑->虚拟网络编辑器->vmnet8

2.修改网络配置信息

vi /etc/sysconfig/network-scripts/ifcfg-ens33
# 修改
ONBOOT=yes
BOOTPROTO=static  # 静态ip DHCP动态获取ip

# 添加
IPADDR=192.168.146.201
NETMASK=255.255.255.0
GATEWAY=192.168.146.2
DNS1=114.114.114.114

# 删除
UUID

3.重启网卡

reboot # 重启
systemctl restart network # 重启网卡
ip addr # 查看IP信息

2 防火墙

1.保护本机的端口不被别人访问
2.如果端口需要被别人访问到,需要添加端口的防火墙除外
3.关闭防火墙

# 本次开机状态下防火墙关闭:本次服务内关闭防火墙
systemctl stop firewalld
# 服务器重启后防火墙禁用:禁用防火墙服务
systemctl disable firewalld
# 查看防火墙状态
systemctl status firewalld

3 软件安装限制

1.操作系统对未知软件的安装有可能拒绝或者警告,我们需要禁用这个功能
2.修改限制

vi /etc/selinux/config
# 修改
SELINUX=disabled

4 关机

# 直接拔掉电源
halt
# 直接关闭机器,但是有可能当前虚拟机其他人正在使用
poweroff
# 马上关闭计算机,但是可以给其他用户发送消息
shutdown -h now
# 重启
reboot

三、Linux常见命令

linux查询网站:linux命令大全

1 命令帮助

# 查看命令类型
type
# 查看内置命令的帮助文档
help
# 查看外部命令的帮助文档
man

2 常见命令

# 查询命令文件的位置
whereis
# 查看文件的类型
file
# 查看当前在线的用户
who
# 我是谁,当前使用的用户
whoami
# 我在哪,当前路径
pwd
# 查看内核信息
uname -a
# 类似于sout syso,打印语句
echo
# 清屏
clear
# 查看历史使用命令
histort
# 清除历史
histort -c

3 特殊字符

.” :

  1. 如果文件的开始是“.”,说明当前文件是一个隐藏文件
  2. .”指向当前目录
  3. . .”指向当前目录的上级目录

$” :说明这是一个变量
*” :通配符
”:当前用户的家目录

  1. 每个用户的家目录是不同的
  2. root用户家目录在系统根目录下,其他用户的家目录在“/home/用户名”目录下

/” :整个linux文件的根目录
命令的参数:

  1. 如果是单词一般加“- -
  2. 如果是字符或者是缩写一般加“-

四、Linux文件系统

1 磁盘挂载

mount /dev/disk1 /usr/download
disk1 1T
mount /dev/disk2 /usr/upload
disk2 100T
mount /dev/disk3 /usr/upload/photo
disk3 1P

2 二级目录

/bin # 可执行文件
/boot # 引导分区
/dev # 硬件设备信息
/etc # 系统配置文件
/home # 普通用户的家目录
/lib # 类库
/lib # 动态连接库
/media # 多媒体文件
/mnt # 挂载区
/opt # 软件安装目录
/proc # 当前的进程信息
/root # 超级管理员的家目录
/run # 临时的文件系统,开机启动信息
/sbin # 管理员相关命令
/srv # 系统启动需要的数据
/tmp # 临时数据存放目录
/var # 数据存放目录,不会被清除
/usr # 存放当前用户操作处理信息

3 文件操作

cd # 切换目录
ls ll # 显示文件夹下所有文件
mkdir # 创建文件目录
mkdir -p # 自动创建文件父目录
mkdir -p a/{bcd}ls # 一次可以创建多子目录
rmdir # 删除空文件夹
cp # 拷贝文件或者文件夹
cp -r # 拷贝文件夹下所有内容
mv # 移动文件或文件夹
rm # 删除文件或文件夹
rm -f # 强制删除文件
rm -r # 删除文件夹
rm -rf # 强制删除文件或文件夹
# Inode:文件在文件系统中的id;access:访问时间;modify:修改时间;change:创建时间
stat # 查看文件状态
touch # 如果不存在该文件,则创建文件,如果存在该文件,则修改三个时间
# 软链接和原始文件不是同一个文件,硬链接与原始文件是一个文件
ln # 创建文件的硬链接
ln -s #创建软连接(+源文件地址 链接名)
cat # 一次性加载文件内容
tac # 一次性倒叙加载文件内容
# 分页查看文档内容,回车(下一行),空格(下一页),b(回退),q(退出)
more less
# 从文章开始读取n行,默认如果超过10行则读取10行,否则读取现在行数(head -行数 文件名)
head 
tail # 从文章结尾开始读取n行(tail -n 文件名)
# 监听指定名字的文件,但是当文件被删除后,即使重新创建,inode也会发生变化,监听会失败
tail -f baidu 
# 监听指定名字的文件,如果文件删除后,重新创建,会重新监听新文件的数据变化,监听不受影响。
tail -F baidu 

4 vi与vi编辑器

1.打开文件
vi a.txt # 正常打开文件
vi +n a.txt # 打开文件,将光标置于第n行
vi + a.txt # 打开文件,将光标置于最后一行
vi +/word # 打开指定搜索单词的位置;n:下一个;N:上一个
2.三种模式:
  1. 编辑模式
  2. 输入模式
  3. 末行(命令行)模式

命令行模式常用命令:

set nu # 设置行号
set nonu # 取消行号
w # 保存
q # 退出
wq # 保存并退出
q! # 强制退出但不保存
/pattern # 搜索指定模式的字符串
s/p1/p2/ # 替换字符串,将p2替换为p1,只替换当前行第一个
s/p1/p2/g # 替换当前行所有字符串
3,8s/p1/p2/g # 查找指定行并替换
g/p1/s//p2/g # 替换全文字符串

5 计算机间数据传输

1.windows -> linux
# 安装lrzsz
yum install lrzsz -y

rz /a # 将文件从windows上传到linux
sz /a # 将文件从linux传输到windows
2.linux -> linux
scp /a/a.txt root@192.168.146.201:/b/
scp root@192.168.146.201:/a/a.txt /b/
scp -r # 拷贝文件夹

6 文件大小

df -h # 查看分区信息
du -h # 查看目录空间大小
du -h --max-depth=1 /a/ # 查看目录所占空间大小,指定文件夹深度

7 文件压缩

1 tar:主要针对.tar.gz文件
tar -zxvf a # zx解压;v显示打包过程;f指定压缩包的名称
tar -zcvf a b # a压缩后的名称 b源文件;zc压缩
-C # 指定解压或者压缩目录
2 zip:主要针对.zip文件
# 安装
yum install zip unzip -y
# 压缩
zip -r a.zip src
# 解压
unzip a.zip

五、Linux的网络信息

1 主机名称修改

hostname node1 # 临时修改
vi /etc/hostname # 长久修改

2 DNS解析

域名解析服务:将域名转换为ip地址
linux修改主机域名

vi /etc/hosts
# 添加
192.168.146.201 node1

3 网络相关命令

ifconfig # 查看当前网卡的配置信息,可用ip addr替代
netstat # 查看当前网络的状态信息
ping # 查看与目标ip是否能够连通
talnet # 查看与目标ip的指定端口是否能够连通
curl -XGET 192.168.146.201 # 在命令行访问某些ip地址的网址

netstat:查看当前网络的状态信息

  1. 一个机器默认有65536个端口,端口号[0,65535]
  2. 一个端口只能被一个程序所监听,端口已经被占用
  3. -anp:查看计算机的端口监控情况
  4. -r :查看核心路由表

talnet:查看与目标ip的指定端口是否能够连通

  1. 安装:yum install talnet -y
  2. talnet 192.168.146.201 8080

4 主机间相互免密钥

ssh-keygen -t rsa -P ‘’ -f ~/.ssh/id_rsa # 生成密钥
ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.146.201 # 公钥传递
~/.ssh/authorized_keys # 密钥存放地址

5 主机名与host校验

1.本次连接有效
ssh -v -o GSSAPIAuthentication=no root@192.168.146.201
2.所有有效
# 修改本机客户端配置文件ssh_config
vi /etc/ssh/ssh_config

# 修改
# GASSAPIAuthentication yes
GASSAPIAuthentication no
# 添加
StrictHostKeyChecking no
UserKnownHostsFile /dev/null

6 日期与时间

1.日期自动同步
yum install ntp -y
ntpdate cn.nap.org.cn

7 用户

# 新增用户(会创建同名的组和家目录)
useradd username
# 设置密码
passwd username
# 删除用户(级联删除家目录和组)
userdel -r username
# 修改用户名
usermod -l oldusername username
# 锁定用户名
usermod -L username
# 解锁用户名
usermod -U username
# 查看(用户名,编号,组编号,家目录)
cat /etc/passwd
# 查看用户名和密码
cat /etc/shadow
# 切换用户
su username

8 组

# 创建组
grouadd gname
# 删除组
groupdel gname
# 修改组名称
groupmod -n gname oldgname
# 查看当前用户所对应的组,注:当创建用户时,会默认创建一个同名的主组
groups
# 修改附属组
usermod -G gname username
# 修改主组
usermod -g gname username
# 查看组信息
cat /etc/group

9 权限

权限项读/写/执行读/写/执行读/写/执行
字符表示r/w/xr/w/xr/w/x
数字表示4/2/14/2/14/2/1
权限分配文件所有者U文件所属组用户G其他用户O
1.权限的UGO模型:

三组权限(属主的权限、属组的权限、其他的权限)
将来修改文件权限可以从rwx和ugo两个方面修改

2.修改文件权限

修改文件所属的主

chown uname /a/b.txt
# 修改文件夹时让子目录迭代修改
chown -R uname:gname /a/b.txt
chown uname:gname /a/b.txt

修改文件所属的组

# 当用户的组被修改后,需要重新登陆才能获取新组的权限
chgrp gname /a/b.txt

修改文件的rwx

chmod o+w /a/b.txt
chmod ug+rw /a/b.txt
chmod ugo-rw /a/b.txt
# 权限rwx分别对应数字4/2/1 5=4+0+1 r-x
chmod 664 /a/b.txt // rw- rw- r--
3.权限赋予:将管理员权限分配给普通用户
# 文件位置
vim /etc/sudoers
# 修改
visudo
# 修改Line 99
uname ALL=(root) 权限路径
# 切换用户
su uname 

六、管道与重定向

1 管道

|:将前面的结果作为参数传递给后面的命令
grep:强大的文本搜索工具

cat a.txt | grep word

2 重定向

改变数据输出的位置,方向

# 1:正确信息 2:错误信息
ls / 1> a.txt
ls / > a.txt
ls abcd 2> a.txt
# >:覆盖 >>:追加
ls / 1> a.txt
ls / 1>> a.txt
# 结合使用
ls /etc/abc > a.txt 2>&1
ls /etc/abc >> a.txt 2>&1

七、Linux的系统进程

1 进程信息

# UID所属用户;PID当前进程编号;PPID当前进程编号的父进程编号
ps ef
# 所有信息
ps -aux
# 当前服务器内存使用率
top

2 后台进程:在命令后添加一个&

ping www.baird.com >> baidu &
# 查看当前的后台进程
jobs -l
# nohub防止后台进程被挂起
nohub ping www.baidu.com >> baidu 2>&1 & 

3 杀死进程

kill -9 17599

八、软件安装

1.yum命令
search # 查看查询命令或者软件 
info # 查看包信息
2.更换阿里源
# 安装wget
yum install wget -y
# 备份系统原始配置文件
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
# 使用wget获取阿里yum源配置文件
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
# 清空以前yum源的缓存
yum clean all
# 获取阿里云的缓存
yum makecache
3.安装MySQL
# 安装mysql依赖
yum install perl net-tools -y
# 卸载mariadb
rpm -qa | grep mariadb
rpm -e --nodeps mariadb-libs-5.5.56-2.el7.x86_64
# 安装mysql
tar -xvf mysql-8.0.28-1.el7.x86_64.rpm-bundle.tar

rpm -ivh mysql-community-common-8.0.23-1.el7.x86_64.rpm
rpm -ivh mysql-community-libs-8.0.23-1.el7.x86_64.rpm --force --nodeps
rpm -ivh mysql-community-libs-compat-8.0.23-1.el7.x86_64.rpm --force --nodeps
rpm -ivh mysql-community-client-8.0.23-1.el7.x86_64.rpm --force --nodeps
rpm -ivh mysql-community-server-8.0.23-1.el7.x86_64.rpm --force --nodeps
# 启动mysql
systemctl start mysqld
# 查找密码并登陆mysql
cat /var/log/mysql.log | grep password
ALTER USER() ‘root’@‘localhost’ IDENTIFIED BY ‘Cz12345@’;
mysql -u root -p
# 修改mysql密码
set global validate_password.policy=0;
set global validate_password.length=6;
set global validate_password.mixed_case_count=0;
ALTER USER() ‘root’@‘localhost’ IDENTIFIED BY ‘123456’;
# 修改mysql远程登录权限
use mysql;
update user set host=‘%’ where user=‘root’;
commit;
exit;
# 重启数据库
systemctl restart mysqld
# 使用Navicat连接mysql

九、Linux三剑客

1 普通剑客

# 用制定规则来切分文本
cut
# 对文件passwd以:进行切分,取第1,2,3列值
cut -d’:’ -f1,2,3 passwd
# 对文本中的行进行排序
sort
sort abc.txt
# 对每一行的数据进行切分,按照第二列进行排序
sort -t’ ’ -k2 abc.txt
# 逆序排序
sort -t’ ’ -k2 -r abc.txt
# 按照数值大小进行排序,如果有字母,字母在前
sort -t’ ’ -k2 -n abc.txt
# 统计单词的数量
wc
# 结果:-l:行数;-w:单词数;-c:字符数
wc abc.txt

2 grep

# grep对文本进行搜索
# 同时搜索多个文件
grep school passed abc.txt
# 显示匹配的行号
grep -n school passwd 
# 显示不匹配
grep -nv school passwd --color=auto
# 忽略大小写
grep -i school passwd --color=auto
# 使用正则表达式匹配
grep -E “[1-9]+” passwd --color=auto 

3 sed

sed:从文件或者管道中读取一行,处理一行,输出一行;如此循环

1.行的选择模式:
    10 # 第十行
    m,n # 第m行到第n行
    m,+n # 第m行到第m+n行
    m~n # 从第m行开始依次累加n行
    m,$ # 从m行开始到最后一行
    /school/ # 匹配到school的行
    /u1/,/u4/ # 从匹配u1到匹配u4
2.增
sed ‘2a wenben’ passwd # 追加一行,在后面
sed ‘2i wenben’ passwd # 打印到控制行之后,插入一行,在前面
sed -i ‘2a wenben’ passwd # 直接修改到文件
3.删
sed ‘3,10d’ passwd # 删除第3到第10行
4.改

1.整行替换

sed ‘3,20c hahaha’ passwd # 3-20行每一行都替换为指定文本
sed ‘3~1c hehehe’ passwd # 从第3行开始每隔1行换一次

2.字符替换

sed ‘1,5s/root/wenben/g’ passwd
sed ‘1,5s#/#-#g’ passwd

4 awk

作用:找谁,干啥

十、Linux的shell编程

1 执行shell的方式

# 执行的必须是一个可执行文件
./abc.sh
# 执行文件可以是一个普通文件
sh abc.sh
# 直接在当前进程执行脚本,执行bash时开启一个子进程,当脚本中出现ping时开启一个子线程
source bac.sh

2 shell语法

1.变量
export # 可以将当前进程的变量传递给子进程使用
2.shell语法:查询网站

3 脚本开机自启动

vim /etc/rc.d/rc.local # 在其中添加脚本
chmod u+x /etc/create.d/crystal/local # 赋予执行权限
reboot

vim schoolntpdate.sh # 创建开机自启动脚本
# 脚本内容如下
——————————————————
#! /bin/bash
# chkcofig: 2345 88 99
# description:auto_run

# 开机自启动同步时间
yum info nap && ntpdate cn.nap.org.cn
——————————————————

chomd u+x schoolntpdate.sh # 给其设置执行权限
cp schoolntpdate.sh /etc/init.d # 将脚本拷贝到/etc/init.d/目录下
chkconfig —add /etc/init.d/schoolntpdate.sh # 添加到服务

reboot # 重启服务器

4 定时任务

1.查看定时任务服务状态
systemctl status crond.service
2.添加任务,编辑当前用户的任务列表
crontab -e
3.编辑任务
***** command # 分 时 日 月 周 命令

第1列表示分钟1-59,每分钟用或者/1表示
第2列表示小时1-23,0表示0点
第3列表示日期1-31
第4列表示月份1-12
第5列表示星期0-6,0表示星期天
第6列要运行的命令

:表示任意时间,实际上就是每的意思
-:表示区间,是一个范围
,:是分割时段
/n:表示分割,可以看成是除法,
/5 * * * * cmd,表示每隔5分钟执行一次

# 每晚21:30重启apache
30 21 * * * /usr/local/etc/rc.d/lighttpd restart
# 每月1、10、20日的4:45重启apache
45 4 1,10,22 * * /usr/local/etc/rc.d/lighttpd restart
# 每周六、周日的1:10重启apache
10 1 * * 6,0 /usr/local/etc/rc.d/lighttpd restart
# 每天18:00-23:00之间每隔30分钟重启apache
0,30 18-23 * * * /usr/local/etc/rc.d/lighttpd restart
# 每周六的11:00重启apache
0 23 * * 6 /usr/local/etc/rc.d/lighttpd restart
# 每一小时重启apache
* */1 * * * /usr/local/etc/rc.d/lighttpd restart
# 晚上11:00-早上7:00之间,每隔一小时重启apache
* 23-7/1 * * * /usr/local/etc/rc.d/lighttpd restart
# 每月的4号与每周一到周三的11:00重启apache
0 11 4 * mon-wed /usr/local/etc/rc.d/lighttpd restart
# 1月1号的4:00重启apache
0 4 1 jan * /usr/local/etc/rc.d/lighttpd restart
4.使其生效
systemctl restart crond.service
5.查看当前的定时任务
crontab -l
6.产看历史任务
vim /var/spool/mail/root
7.清除任务
crontab -t

5 编写环境集群脚本

#! /bin/bash
echo "————————在opt和var创建文件夹"
mkdir -p /opt/db
mkdir -p /var/db

echo "————————禁用防火墙"
systemctl stop firewalld
systemctl disable firewalld

echo "————————修改selinux”"
sed -i '/^SELINUX=/c SELINUX=disabled' /etc/selinux/config

echo "————————安装wget"
yum instal wget -y

echo "————————更换yum源"
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
yum clean all
yum makecache

echo "————————安装常用软件,man、man-pages、ntp、vim、lrzsz、zip、unzip"
yum install man man-pages ntp vim lrzsz zip unzip -y

echo "————————DNS域名配置"
echo "192.168.146.201 node1" >> /etc/hosts
echo "192.168.146.202 node2" >> /etc/hosts
echo "192.168.146.203 node3" >> /etc/hosts
echo "192.168.146.204 node4" >> /etc/hosts

echo "————————安装jdk"
cp jdk-8u162-linux-x64.tar.gz /usr/java
cd /usr/java
tar -zxvf jdk-8u162-linux-x64.tar.gz
rm -f jdk-8u162-linux-x64.tar.gz

echo export JAVA_HOME=/usr/java/jdk1.8.0_162 >> /etc/profile
echo export PATH=$JAVA_HOME/bin:$PATH >> /etc/profile
echo export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib >> /etc/profile
source /etc/profile
 
echo "————————安装tomcat"
tar -zxvf apache-tomcat-8.5.78.tar.gz
mv apache-tomcat-8.5.78 /usr/opt/db/apache-tomcat-8.5.78
echo "————————安装mysql"
rpm -e --nodeps `rpm -qa | grep mariadb`

tar -xvf mysql-8.0.28-1.el7.x86_64.rpm-bundle.tar

rpm -ivh mysql-community-common-8.0.28-1.el7.x86_64.rpm
rpm -ivh mysql-community-libs-8.0.28-1.el7.x86_64.rpm --force --nodeps
rpm -ivh mysql-community-libs-compat-8.0.28-1.el7.x86_64.rpm --force --nodeps
rpm -ivh mysql-community-client-8.0.28-1.el7.x86_64.rpm --force --nodeps
rpm -ivh mysql-community-server-8.0.28-1.el7.x86_64.rpm --force --nodeps

temppasswd =`grep "A temporary password" /var/log/mysqld.log | awk '{ print $NF}'`
mysql -urology -p$temppassword —connect-expired-password << EOF
ALTER USER() 'root'@'localhost' IDENTIFIED BY 'Cz12345@';
set global validate_password.policy=0;
set global validate_password.length=6;
set global validate_password.mixed_case_count=0;
ALTER USER 'root'@'localhost' IDENTIFIED BY '970522';
use mysql;
update user set host='%' where user='root';
commit;
exit;
EOF

systemcal restart mysqld

echo "————————设置开机启动项"
touch /usr/local/script/auto_ntpdate.sh
echo '#! /bin/bash' >> /usr/local/script/auto_ntpdate.sh
echo 'yum info ntp && ntpdate cn.ntp.org.cn' >> /usr/local/script/auto_ntpdate.sh
chomd u+x /usr/local/script/auto_ntpdate.sh
echo '/usr/local/script/auto_ntpdate.sh' >> /etc/rc.local
chmod u+x /etc/rc.local

echo "————————删除文件"
rm -rf apache-tomcat-8.5.78.tar.gz
rm -rf jdk-8u162-linux-x64.tar.gz
rm -rf mysql*
rm -rf *.sh

:set fileformat=unix
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值