一、前提准备:
虚拟机VMware12或15
centOS7镜像文件
二、虚拟机的安装步骤
下面安装一路默认:直到有红色警告的地方
等待安装完成登陆即可
三、简单配置
1.设置自己的IP
vi /etc/sysconfig/network-scripts/ifcfg-ens33
每行代码的解释如下:
代码 | 解释 |
TYPE=Ethernet | //网络类型:Ethernet以太网 |
BOOTPROTO=none | //引导协议:自动获取、static静态、none不指定 |
DEFROUTE=yes | //启动默认路由 |
IPV4_FAILURE_FATAL=no | //不启用IPV4错误检测功能 |
IPV6INIT=yes | //启用IPV6协议 |
IPV6_AUTOCONF=yes | //自动配置IPV6地址 |
IPV6_DEFROUTE=s | //启用IPV6默认路由 |
IPV6_FAILURE_FATAL=no | //不启用IPV6错误检测功能 |
NAME=ens33 | //网卡设备的别名 |
UUID=90528772-9967-46da-b401-f82b64b4acbc | //网卡设备的UUID唯一标识号 |
DEVICE=ens33 | // 网卡的设备名称 |
ONBOOT=yes | // 开机自动激活网卡 |
DNS1=6.6.6.6 | //D NS域名解析服务器的IP地址 |
IPADDR=192.168.1.199 | //网卡的IP地址 |
PREFIX=24 | //子网掩码 |
GATEWAY=192.168.1.1 | //默认网关IP地址 |
IPADDR=192.168.2.2 | #你想要设置的固定IP理论上192.168.2.2-255之间都可以, |
NETMASK=255.255.255.0 | #子网掩码,不需要修改; |
GATEWAY=192.168.2.1 | #网关,这里是你在“2.配置虚拟机的NAT模式具体地址参数”中的 |
保存退出后刷新一下网络
service network restart
查看能否连接外网
ping www.baidu.com
建议关闭防火墙
systemctl stop firewalld.service
关闭开机自启
systemctl disable firewalld.service
关闭selinux
vi /etc/selinux/config
设置 SELINUX=disabled
2.修改主机名以及IP和主机名的映射
vi /etc/sysconfig/network
在最后一行添加 HOSTNAME=yourname.com 保存退出
vi /etc/hosts
在最后一行添加(你自己的ip)
192.168.195.88 yourname.com 保存退出
检查:
ping yourname.com
3.创建用户以及赋予普通用户免密码的超级权限
useradd newUserName
visudo
在 root ALL=(ALL) ALL 下一行添加
username ALL=(ALL) NOPASSWD:ALL
保存退出
四、其他Linux的简单命令
基础命令:
命令 | 说明 | 1 | 2 | 3 |
ls | 查看本文件夹下的信息 | -a:显示所有的内容 | -l或ll:列举详细的信息 | -d:列举当前信息 |
mkdir | 创建文件夹 | [-p]:递归创建 | mkdir -p data/data | 相对目录和绝对目录 |
rmdir | 删除空文件夹 | |||
touch | 创建文件 | 通过改变创建时间 | -p:递归 | |
rm | 删除文件 | rm -rf:删除目录和文件 | ||
cd | 打开 | cd …返回上一级 | cd / 返回根目录 | cd ~家目录 |
pwd | 显示当前目录 | |||
whereis | 查找命令 | |||
clear | 清屏 | ctrl l | ||
history | 显示用户的登录信息 | |||
cp | 复制 | -r 复制目录 | 可以重命名的 | |
mv | 剪切 | |||
cat | 查看一个文件的内容 | -n:显示行号 | ||
more | 翻页查看 | 空格翻页 | 按q退出 | |
less | 可以上下翻页 | |||
head | -10 :显示前10行 | -F:后行显示 | ||
tail | -3 :显示最后三行 | |||
echo | 回显 |
操作 | 说明 |
date | 显示当前时间 |
who | 显示用户的登录名 |
su | 切换用户命令 |
cal | 显示日历 |
bc | 计算器 |
shutdown | 关机 |
useadd | 增加普通用户 |
userdel | 删除普通用户 |
8.Linux用户权限
操作 | 说明 | |
root | 最高权限 | UID=0 |
useradd | 添加用户 | 500-1000 |
passwd | 设置密码 | |
su | 切换用户 | |
groupadd | 创建组 | |
groupdel | 删除组 | |
chgrp | 改变档案所属群组 | |
chown | 改变档案所属人 | |
chmod | 改变档案的属性 | SUID等等的特性 |
Linux入门
##权限管理
说明:将人们创建的权限进行修改
用户类型:
所有者:u
用户组:g
其他人:o
所有人:a
目录权限的类型:
类型 | 说明 | 数字 |
r | 可读 | 4 |
w | 可写 | 2 |
x | 可执行 | 1 |
chmod:修改文件的权限
chmod g+x aaa:给组添加执行的权限
chmod a-x,a+r aaa:所有人去除实行,添加读的权限
chmod 777 aaa:共享文件
注意:普通用户没有在其他家目录中的任何的操作
家目录绝对隐私
分组:
chgrp [-r] 组名 文件和文件夹
改变用户所有权:
chown username:username /test01
username:groupname
修改用户指定组:
usermod -g 组名 用户名
操作 | 说明 | 例子 | 说明 |
chmod | 修改文件权限 | chmod 777 | 所有人都可以操作 |
chgrp | 把文件赋给某个组权限 | chgrp user1 /test01 | 赋予某个组权限 |
chown | 改变文件所有权 | chown user1:user1 /test01 | 修改某个文件的所有权和分组 |
usermod | 修改用户所在组 | usermod -g user2 user1 | 把1分到2组当中 |
关机和克隆
关机 | 重启 | 克隆 | 快照 |
shutdown -h now | reboot | 复制镜像 | 备份 |
halt | init 6 | 下次出问题可以直接返回快找时间点 | |
init 0 |
常用工具命令
visudo | 普通用户获得超级权限 | 在root后加入: username ALL=(ALL) NOPASSWD: ALL | |
systemctl stop firewalld | 关闭防火墙 | service iptables stop | |
systemctl start firewalld | 打开防火墙 | 普通用户打不开 | service iptables start |
systemctl status firewalld | 查看防火墙状态 | service iptables status |
常见符号:
符号 | 注释 | 说明 | 符 号 | 注释 |
. | 当前目录 | … | 上一级目录 | |
| | 管道符 | 过滤 :grep ‘data’ 模糊匹配 | > | 定向覆盖符号 |
>> | 重定向追加符号 | cat /etc/passwd | grep ‘data’ >>/test01/test3.txt | ~ | 家目录 |
& | 后台运行 | \ | 换行 | |
< | 可以改变标准输入 | * | 任意的,通配符 | |
? | 代表任意一个字符 | d?v … d* | set nu | 设置行号 |
vi编辑器
操作 | 说明 | 操作 | 说明 |
yy | 复制当前行 | 10yy | 复制从当前开始的十行 |
p | 粘贴 | dd | 剪切当前行 |
10dd | 剪切从当前行开始的十行 | G | 跳到最后一行 |
gg | 跳到第一行 | 10gg | 跳到第10行 |
u | 撤销上一步 |
进入插入模式(6个命令)
操作 | 说明 |
【i】 | 从目前光标所在处插入 |
【I】 | 从目前光标 |
【a】 | 从当前光标所在的下一个字符处开始插入 |
【A】 | 从光标所在行的最后一个字符处开始插入 |
【o】 | 英文小写字母o,在目前光标所在行的下一行处插入新的一行并开始插入 |
【O】 | 英文大写字母O,在目前光标所在行的上一行处插入新的一行并开始插入 |
最后行模式:在命令行的模式下按shift+:进入最后行模式
操作 | 说明 | 操作 | 说明 |
:w | 保存文件 | :w! | 若文件为只读,强制保存文件 |
:q | 退出 | :q! | 不保存强制退出 |
:wq | 保存后离开 --会修改最后修改的时间 | :wq! | 强制保存后离开 |
:set nu | 显示行号 :set nonu | 取消显示行号 | |
! | 强制退出 | x | 保存退出不会修改时间 |
X | 加密 |
帮助与查找命令
man:查看命令的详细用法
-新命令;–旧命令
find:查找文件,会包含子目录
格式:find 路径 条件
条件 | 说明 | 例子 |
-name | 以名字来查询 | find /test01 -name ‘*.txt’ |
-size | 大小查找 | find /test01 -size +0 |
-type | 类型 | find /test01 -type d(文件夹)f(文件)b(块) |
du统计目录的大小
格式:du [-acsh] dir_目录
条件 | 说明 | 例子 |
-a | 全部文件和目录大小都列出来 | du -a /test01 |
-c | 最后总加 | du -c /test01 |
-h | 大小显示单位 | du -h /test01 |
wc:文本统计
-l:查看多少行
-w:查看有多少单词
-c:字节
shell 脚本
##网络管理
关键字 | 意思 | 用法 | 说明 |
route | 查看网络 | route -n | 查看路由信息 |
netstat | 端口 | netstat -alunlp | 查看端口信息 |
netstat -alunlp | grep 22 | 查看22号端口信息 |
标签 | 解释 |
top:实时查看进程信息 | |
PID | 进程id |
USER | 进程所有者 |
PR | 进程优先级 |
VIRT | 进程使用的虚拟内存总量 |
RES | 进程使用的、未被换出的物理内存大小 |
SHR | 共享内存大小 |
%CPU | 上次更新到现在的CPU时间占用百分比 |
%MEM | 进程使用的物理内存百分比 |
TIME+ | 进程使用的CPU时间总计,单位1/100秒 |
COMMAND | 进程名称(命令名/命令行) |
. | . |
free -m | 查看内存信息 |
ps | 查看进程(列出) |
-A:查看所有; -l:查看启动的进程 | |
kill -p pid | 只打印相关进程的进程号,而不发送任何信号 |
kill -9 pid | 强制杀死指定的进程 |
jps | 专门用于查看java进程 |
Linux常用压缩
只能压缩文件,压缩后,原文件就不见了
压缩 | 解压 |
gzip 文件名 (.gz格式) | gunzip 压缩包名字 |
bzip2 文件名字 (.bz2格式) | bunzip2 压缩包名字 |
funzip 压缩文件名:可以查看其内容 |
打包 tar
. | . |
tar -cvf 打包的名字.tar 文件 | 打包 |
tar -xvf 要解包 -C 路径 | 解包 |
例:先打包,再压缩 | 再解压,后解包 |
tar -zcvf 新建包名.tar.gz 文件 | 打包压缩 |
tar -zxvf 要解压解包名 -C 路径 | 解压解包 |
操作 | 说明 | 操作 | 说明 |
-c | 打包 | -x | 解包 |
-v | 显示 | -t | 查看 |
-z | gzip | -j | bzip2 |
-f | 使用档名 | -C | 指定文件的路径 |
打开即插即用文件,打开光盘,查看内容是否为空,Packages即包含RPM包
rpm操作 | 说明 |
rpm -qa | grep ‘zlib’ | 查看已经安装的,带zlib |
rpm -ivh 压缩包 | 进行安装 |
rpm -Uvh 文件(包)名 | 更新 |
rpm -e 安装后的名字 | 删除安装 |
rpm -e --nodeps name | 忽略依赖关系 |
rpm -qf /bin/ls | 查看ls属于哪个软件包 |
rpm -ql zlib-1.2.3-29.el6.x86_64 | |
rpm -qR 软件包名 | 查询软件包的依赖性 |
操作 | 代码 |
查看所有安装过的 | yum list [installed] |
安装上载软件(rz上传) | yum install [-y] lrzsz |
卸载 | yum remove [-y] package_name |
运算符和表达式
变量定义:key=value,等号两边不能有空格,系统变量要大写,值中有空格用"",命令赋给变量用``
echo的使用:回显
-n:不要在最后自动换行
-e:特别处理特殊字符(\n:换行; \t:插入tab键)
环境变量
全局变量在:/etc/profile
用户自己变量:.bash_profile
操作 | 说明 |
export -p | 显示变量 |
export TEMA=12 | 创建环境变量(大写) |
export -n TEMA | 删除变量(不是真正意义的删除 |
变量设置
位置变量
脚本中:$1-$9,表示第一个到第九个参数
编写脚本规范:必须声明头部 #!/bin/bash
脚本的运行:必须有可执行的权限,文件添加可执行文件
预定义变量: | . |
$0 | 脚本的名称 |
$! | 进程的PID号 |
$? | 程序执行的状态,0成功,非0不成功 |
$* | 所有参数,整体 |
$$ | 当前进程的id号 |
$# | 参数的总个数 |
$@ | 所有参数,分割 |
自定义变量: | |
定义 | a=1 b=abcd c=“wo hen shuai” |
使用 | echo “{b}----${c}” |
read:从标准输入中读取一行,并把输入行的每个字段的值指定给shell变量
read的用法 | |
-n | 后跟一个数字,定义输入文本的长度,很实用。 |
-r | 允许输入使用转义字符 |
-p | 打印提示内容 |
通配符
. | |
* | 匹配任意长度的任意字符 |
? | 匹配任意单个字符 |
使用范围 | ls find cp |
列出以.gz结尾文件的详细信息 | ls -l *.gz |
列出以d开头、后面跟1个字符 | ls -l ‘d?’ |
表达式 | 意思 | 说明 |
[] | 某个范围的单个字符 | 0-9 a-z A-Z |
. | 单个字符 | |
* | 匹配多个–匹配多个字符需要用.* | |
^ | 以什么开头 | 在中括号中表示非 |
$ | 以什么结尾 | |
\ | 通常用于打开或关闭后续字符的特殊含义 |
过滤操作 | 说明 |
grep ‘r…t’ passwd | 过滤出r…t数据 |
grep ‘^root’ passwd | 过滤出以root开头的数据 |
grep ‘[0-9]:[0-9]’ passwd | 过滤出0-9:0-9复合的数据 |
sed:是一个很好的文件处理工具,本身是一个管道命令,主要是以行为单位进行处理,可以将数据行进行替换、删除、新增、选取等特定工作
sed操作 | 说明 |
sed ‘1d’ passwd | 删除第一行 |
sed -i ‘1d’ passwd | 在原数据上直接删除第一行数据 |
sed -n ‘1,2p’ passwd | 查看1.2行 |
sed -i ‘1d’ passwd | 直接修改原文件(删除) |
sed -i ‘1a\hello word’ passwd | 第一行添加数据 |
sed -e ‘4a\newLine’ passwd | 不修改原文件,在第4行后添加新一行数据 |
sed ‘1c Hi’ passwd | 第一行替换成Hi |
操作符 | 说明 |
-e | 以选项中指定的script来处理输入的文本文件。 |
-i | 直接修改读取的档案内容,而不是由萤幕输出。 |
-n | 使用安静(silent)模式,在指定了值的时候显示指定的值 |
command | |
a | 新增,后面可以接字串 |
c | 取代,可以接字串,这些字串可以取代 n1,n2 之间的行! |
d | 删除,因为是删除啊,所以 d 后面通常不接任何东西 |
p | 查看 |
awk:
awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑awk在其对数据分析并生成报告时,显得尤为强大。
wak使用 | 说明 |
cat /etc/passwd | awk -F ‘:’ ‘{print$1"\t" $7}’ | 打印第一列和第七列 |
awk -F ‘:’ ‘{ print $3 }’ passwd | 打印第三列 |
通用表达式
与 | && | A执行成功,B才执行 |
或 | || | A成功,B不执行 |
; | 无逻辑关系 |
内置判断测试
所在位置 | 等于 | 不等于 | 大于 | 小于 | 大于等于 | 小于等于 |
字符串 | = | != | \> | < | ||
数字:在[]中 | -eq | -ne | -gt | -lt | -ge | -le |
在(())中 | == | != | > | < | >= | <= |
-z:判断变量是否为空,空返回真 非空返回假 可以判断
str=''
判断的是 ""
-n:判断变量是否不为空,不为空返回真
[ -n "\$str3" ];echo \$?
[ -n "\$str" ];echo \$? --1
|文件|-e|-f|-d|-r|-w|-x|
文件 | . |
-f | 判断是否是一个文件 |
-d | 判断是否是一个目录 |
-e | 判断是否是存在 |
-w | 判断是否是可写 |
-r | 判断是否是可读 |
-x | 可执行 |
运算(a=1,b=2)
. | |
$[a+b] | $[b] |
$((a+b)) | $(($a+$b)) |
expr | $a \* $b |
时间命令:date
. | |
date +%Y%m%d%H%M | |
date -d ‘1 days ago’ '+%Y%m%d%H%M‘ | |
date -d ‘-1 day’ ‘+%Y%m%d%H%M’ | |
修改 | |
date -s “2016-10-22 18:00:00” | |
date -s ‘如期’–Sat Oct 22 18:00:00 CST 2016 | |
date -d '2 days ago '+"%Y-%m-%d" || date -d ‘-2day’+"%Y-%m-%d" |
[ -z num1 ];echo $? :判断是否为空
expr $num1 * $num2
((num1 > num2));echo $?
shell脚本
###循环结构
for循环
1.
for 变量 in 集合
do
done
for((表达式1;表达式2;表达式3))
do
doine
例:
#!/bin/bash
for i in {1..10}
do
echo -n "$i "
done
echo
name=`ls /`
for i2 in $name
do
echo -n "$i2"
done
echo
for i3 in {a,b,c,d,e,f}
do
echo "$i3 "
done
echo
九九乘法表:
#!/bin/bash
for ((i=1;i<=9;i++))
do
for ((j=1;j<=i;j++))
do
a=$(( $i * $j ))
if [ $j == 1 ];
then
echo -n "$j"x"$i"="$a "
elif [ $a -le 9 ];then
echo -n "$j"x"$i"="$a "
elif [ $a -ge 10 ];then
echo -n "$j"x"$i"="$a "
fi
done
echo
done
while 循环
read -p “输入提示符” 变量 —变量输入
语法:
定义变量a,b
while [ a > b ]
do
循环体
变量赋值
done
读取文本:
while read -r line
do
语句
done < file_path
例:
#!/bin/bash
read -p "请输入一个整数:" num
i=1
echo "我来打印 1 - $num "
while [ $i -le $num ]
do
echo -n "$i "
i=$(($i+1))
done
echo
#!/bin/bash
while read -r line
do
echo $line | awk -F ':' '{print $1}'
done < /etc/passwd
选择结构
单分支
if [ 表达式 ]
then
语句
fi
双分支
if [ 条件 ]
then
语句1
else
语句2
fi
多分支
if [ 条件 ]
then
语句1
elif [条件2]
then
语句2
elif [条件3]
then
语句3
fi
例:
#!/bin/bash
echo "选择练习"
read -p "你是选择外出呢还是在家?(1外出;2在家):" a
if [ $a -eq 1 ]
then
read -p "今天天气真不错,如果你要出门那你要去哪里呢?(1逛公园;2购物):" b
if [ $b -eq 1 ]
then
echo "公园里比较好玩,当然去公园了"
elif [ $b -eq 2 ]
then
echo "当然是陪女票去购物了"
else
echo "必须在1和2中选择,请重新开始游戏!!!"
fi
elif [ $a -eq 2 ]
then
read -p "今天有霾,如果待在家里你会怎么选择呢(1看电影;2打游戏)" c
if [ $c -eq 1 ]
then
echo "我喜欢看电影"
elif [ $c -eq 2 ]
then
echo "当然是放弃女票打游戏了"
else
echo "必须在1和2中选择,请重新开始游戏!!!"
fi
else
echo "必须在1和2中选择,请重新开始游戏!!!"
fi
case的用法:
case 变量 in
value1)
exec command1
;;
value2)
exec command2
;;
*)
exec command3
esac
例:
#!/bin/bash
read -p "请输入一周之内的整数:" num
case $num in
1)
echo "今天是礼拜一"
;;
2)
echo "今天是礼拜二"
;;
3)
echo "今天是礼拜三"
;;
4)
echo "今天是礼拜四"
;;
5)
echo "礼拜五"
;;
6)
echo "休息"
;;
7)
echo "还是休息"
;;
*)
echo "请输入1-7的整数"
;;
esac
多条件判断
if [ ] && [ ]
#!/bin/bash
read -p "请输入一个年份:" year
if [ $(( $year % 4 )) -eq 0 ] && [ $(( $year % 100 )) -ne 0 ] || [ $(( $year % 400 )) -eq 0 ]
then
echo "你输入的是瑞年"
else
echo "你输入的是平年"
fi
a | b)
#!/bin/bash
read -p "请输入性别:" sex
case $sex in
1 | 0 )
echo "性别正确"
;;
*)
echo "性别不正确"
;;
esac
service crond status:查看定时任务状态
:查看定时器
crontab -e: 编辑定时器
/:清除定时器
crontab -u 用户名 -f 文件:将文件作为是用户的定时任务
*/2 * * * * echo "hello" >> /test01/test03/a.txt
30 12 * 1-4 3 命令:1-4月,每周三的12点30分执行一次命令
at 18:00
cat /etc/passwd | awk -F ‘:’ ‘{ print $1 }’
ctrl+D