系统命令:
#显示操作系统的发行版号
uname -r
#查看系统信息
cat /etc/os-release
#将数据由内存同步到硬盘中
sync
#立马关机
shutdown -h now
#重启
reboot
#将主机名设置为iokla
hostnamectl set-hostname iokla
#查看软件文件安装路径
whereis eclipse
#查看ssh状态
systemctl status sshd.service
#启动ssh服务
systemctl start sshd.service
#重启ssh服务
systemctl restart sshd.service
#开机ssh自启
systemctl enable sshd.service
#查看所有启动项,查看开机启动项
systemctl list-unit-files
systemctl list-unit-files --type=service | grep enabled
// 显示自己当前的用户名
whoami
// 显示所有在线用户
who
// 切换到root用户,使用root的权限
su root
// 切换到root用户,不仅使用root的权限,而且环境变量 切换到root用户所配置的状态
su - root
// 显示内存实时状态
// 单位:MB
// 刷新间隔:10秒
free -m -s 10
// 打开资源管理器
top
// 列出进程
ps -aux
// 管道操作
// 把命令返回的内容,作为参数传到bbb命令,再执行bbb命令
aaa | bbb
// 杀进程
kill 进程号
pkill 进程名
重启与关机
// 重启
reboot
// 关机
shutdown
相对路径与绝对路径
// 相对路径 前进
cd 目录
// 相对路径 后退
cd ..
// 绝对路径 直达
cd /目录1/目录2
// 绝对路径 直达根目录
cd /
// 绝对路径 直达home目录
cd ~
mkdir 目录
// 复制文件内容
cp 源文件 目标文件
// 复制目录(递归)
cp 源目录 目标目录 -R
mv 源文件 目标文件
touch 文件
删除文件/目录
// 删除空目录
rmdir 目录
// 删除文件/目录
rm 文件/目录
// 删除文件/目录(递归、强制)
rm -rf 文件/目录
显示当前位置
pwd
显示当前目录内容
// 基础用法
ls
// 同时显示隐藏内容
ls -a
// 同时显示详细信息
ls -l
文本文件操作
1、查看
// 重定向(覆盖内容)
>
// 重定向(追加内容)
>>
// 打印文件所有内容
more 文件名
// 打印文件所有内容,带翻页功能
// 向前翻页:ctrl + b
// 向后翻页:ctrl + f
less 文件名
// 打印文件内容前n行
head -n 文件名
// 打印文件内容后n行
tail -n 文件名
// 多文件内容合并后,再打印
cat 文件名1 文件名2
// 筛选文件内容后,再打印
// 打印该文件中,含有test字符串的行
grep test 文件名
2、打包/解包 + 压缩/解压
// 打包不改变体积
// 包格式:.tar
// 压缩包格式:.gz 或者 .bz
// 基础命令格式
tar vf 包名 包内容
tar vf 包名
// 扩展示例
// 打包
tar cvf 包名 包内容
// 解包
tar cvf 包名
// 压缩gzip包
tar cvfz 包名 包内容
// 解压gzip包
tar cvfz 包名
3、文件查找
// 在根目录下,递归查找名为conf.d的文件
find / -name conf.d
文件挂载
linux下,一切皆文件。当我们要管理硬件设备时,需要将设备目录挂载(引用)到目录下,管理该目录的文件,相当于管理该设备。
// 查看硬盘分区以及挂载点
mount
// 挂载设备
// -t:通常可以不加,系统会自动识别类型
mount -t 文件系统类型 -o 选项参数 设备目录 挂载点目录
// 卸载设备
umount 设备目录
// 或者
umount 挂载点目录
VI编辑器
1、三大模式
2、命令模式-光标移动
(1)字符级移动
// 左/右移一个字符
左/右方向键
// 左移一个字符
h
// 右移一个字符
l
(2)单词级移动
// 移到下个单词首
w
// 移到本单词尾
e
// 移到本单词首
b
(3)行级移动
// 移到行尾
$
// 移到行首
0
// 上/下移一行
上/下方向键
// 下移一行
j
// 上移一行
k
(4)段级移动
// 上移一段
{
// 上移一段
}
(5)屏级移动
// 移到本屏幕第一行
H
// 移到本屏幕最后一行
L
(6)文章级移动
// 移到文章末尾
G
// 移到文章开头
1G
3、命令模式-删除
// 多功能删除
d + 光标移动命令
// 删除当前光标处的字符
x
// 删除当前行
dd
4、命令模式-复制
// 多功能复制
v + 光标移动命令 + y
// 复制当前行
yy
// 复制 n 行(n:自定义数字)
yny
5、命令模式-粘贴
p
6、命令模式-交换
// 交换两字符
xp
// 交换两字符
ddp
7、命令模式-其他
// 重复上次命令
.
// 撤销
u
// 合并两行
J
8、尾行模式
// 保存
w
// 退出
q
// 不保存,强制退出
q!
// 保存 + 退出
wq
网络配置
1、DNS服务器
cd /etc/resolv.conf
// 实例内容
nameserver 208.67.222.222
nameserver 8.8.8.8
2、网卡
cd /etc/sysconfig/network-scripts
// 多网卡的机器,还会有ifcfg-eth1、ifcfg-eth2等
vim ifcfg-eth0
// 网卡常用字段解释
// -----------------
// 网卡类型
TYPE=Ethernet
// 网卡接口名称
DEVICE=eth0
// 系统启动时,是否自动加载
ONBOOT=yes
// 启用地址协议 static(静态ip) dhcp(自动获取)
BOOTPROTO=static
// 网卡ip地址
IPADDR=192.168.1.11
// 网卡网络地址
NETMASK=255.255.255.0
// 网卡网关地址
GATEWAY=192.168.1.1
// 网卡设备MAC地址(一般不能改)
HWADDR=00:0C:29:13:5D:74
// 网卡广播地址(可不写)
BROADCAST=192.168.1.255
用户组/用户管理
1、用户组管理
// 添加一个用户组
groupadd 组名
// 删除一个用户组
groupdel 组名
// 修改一个用户组
groupmod -n 新组名 组名
2、用户管理
// 添加一个用户,同时为该用户,分配一个家目录
useradd -g 组名 -d 家目录 用户名
// 删除一个用户
userdel 用户名
// 修改一个用户,同时为该用户,分配一个家目录
usermod -g 组名 -d 家目录 -l 新用户名 用户名
权限管理
1、权限表
用户类型 | 权限 | 权限的数值表示法 |
---|---|---|
u(user,主人用户) | r(read,读) | 4 |
g(group,非主人的组内用户) | w(write,写) | 2 |
o(other,组外用户) | x(excute,执行) | 1 |
2、修改权限
// 每个文件都存在对应三种用户类型的权限
// 绝对法
// 直接覆盖原有权限
// user用户类型,权限为7
// group用户类型,权限为5
// other用户类型,权限为5
chmod 755 for.sh
// 相对法
// 在原有权限的基础上,增减权限
// other用户类型,添加可读权限,删除可写权限
chmod o+r for.sh
chmod o-w for.sh
// 修改文件的用户
chown 新用户名 文件
// 修改文件的组
chgrp 新组名 文件
安装软件
1、yum
2、编译
除了yum、编译两种方式,还可以通过rpm,安装软件(安装离线包,但不能自动安装依赖)
定时任务
// 创建定时任务
crontab -e
// 格式
分 时 日 月 周 命令
// 示例
// 每天17:30执行下班命令
30 17 * * * 下班
// 每隔2小时执行休息命令
* */2 * * * 休息
// 每隔30分钟输出时间到文件中
*/30 * * * * date >> /date/recordDate.txt
// 定时任务的执行日志,总会被发送到root的邮箱里
// 若不想接收定时任务的信息,可以把日志重定向(扔)到回收站
* */2 * * * 休息 > /dev/null 2>&1
shell编程
1、概念
自动执行一系列系统操作的脚本文件,相当于windows的.bat
2、基本用法
// 示例.sh
//使用bash解析shell脚本
#!/bin/bash
cd /var/tmp
pwd
// 执行脚本
bash 示例.sh
3、变量
(1)自定义变量
// 示例.sh
#!/bin/bash
name=tony
age=16
echo $name is $age years old
(2)系统变量
// 示例.sh
#!/bin/bash
echo $USER
echo $HOME
(3)命令返回值
// 示例.sh
#!/bin/bash
// 将date命令的返回值,赋值给变量
dateCustom=`date`
echo dateCustom
(4)命令表达式
// 示例.sh
#!/bin/bash
// 执行命令的同时,判断是否执行成功
if mkdir test
then
echo success
else
echo fail
fi // 结束if控制
(5)文件判断表达式
// [ -d ./test ] 判断是否为目录
// [ -f ./test ] 判断是否为文件
// [ -e ./test ] 判断是否存在
// [ -r ./test ] 判断是否可读
// [ -w ./test ] 判断是否可写
// [ -x ./test ] 判断是否可执行
// 示例.sh
#!/bin/bash
//判断test是否为目录,若不是,则创建test目录
if [ -d ./test ]
then
echo test exists
elif mkdir test
then
echo mkdir test success
else
echo mkdir test fail
fi
(6)数字比较表达式
// -gt >
// -lt <
// -ge >=
// -le <=
// -eq =
// -ne !=
// 示例.sh
#!/bin/bash
price1=10
price2=20
if [ $price1 -lt $price2 ]
then
echo price1 < price2
elif if [ $price1 -gt $price2 ]
then
echo price1 > price2
else
echo price1 = price2
fi
(7)字符串判断表达式
// 示例.sh
#!/bin/bash
// 判断当前用户是否为root
if [ $USER = root ]
then
echo dange! -u switch
fi
(8)for循环-bash风格
// 示例.sh
#!/bin/bash
// 循环打印多个姓名
for name in tony jenny gogo
do
echo $name
done
(9)for循环-C风格
// 示例.sh
#!/bin/bash
// 循环打印1-10
for ((i=1;$i<=10;i++))
do
echo $i
done