systemctl start [ restart | stop | status ] <服务名>
查看全部服务:
systemctl list-dependencies <图形 | 文本>【已知图形与文本】
重启ssh:systemctl restart ssh
ssh:systemctl enable ssh
查看目录默认运行的级别
systemctl get-default
设置成开机3状态
systemctl set-default multi-user.target
设置成开机5状态
systemctl set-default graphical.target
init 命令(0123456定义)
密码文件存放路径 cat/etc/shadow
用户的关键信息存放路径 cat/etc/passwd
命令:( 滚动)cap
命令:more
绝对路径 从根目录开始
...
..上一层目录
.当前目录
pwd 查看路径
cd 切换路径
mv
rm 删除指令
mkdir 创建新目录
chmod 修改权限
chown 修改文件的所有者
chgrp 修改文件所在组
ls -ahl 查看属性及相关信息
top 显示系统的动态数据
ifconfig 显示系统的网卡配置信息
pidof 查看文件的编码
tr 替换文本中的信息
head 显示文本前多少行信息
tail 显示文本后多少信息
last 历史用户登录信息
history 历史用户输入指令信息
uname -a 显示用户得全名
uptime 显示系统负载状态
date 显示时间
nohup <指令> 后台执行脱离用户登陆终端
reboot 重启
poweroff
shutdown
shutdown -h <+时间> “还有一分钟关机请退出”
halt 暴力关机
ps [-a][-l][-u][-x]
ps axjf 显示进程树
ps -elf 显示进程的优先级
pstree 以树状结构显示进程
jobs
kill 结束某些进程
killall 结束所有进程
kill -9 无条件执行
free -m 显示当前系统内存使用信息
who 查看当前用户
sosreport 收集系统配置及架构信息并输出诊断文档
二通 ls \ | tee \temp\ab.txt【显示内容 | 并保存文件】‘tee’
tree / 显示树状目录
od 查看二进制文件
diff 比较两个文件不同
wc [-l] 只显示行数
wc [-w] 只显示单词数
wc [-c] 只显示字节数
stat <文件名>
cut [参数] 文本
例如
cut -d: -f1 /etc/passwd【提取以冒号:为间隔符号的第一列内容】
cp [选项] 源文件 目标文件
---选项---
【-p】保留原始文件属性
【-d】若对象为链接文件,则保留该链接文件属性
【-r】递归持续复制(用于复制)
【-i】若目标文件存在则询问是否覆盖
【-a】相当于-pdr (p\d\r为上述参数)
mv [选项] 源文件 [目标路径|目标文件名]
删除文件或目录:
rm [选项] 文件
[-f] 强制删除
[-r] 删除目录
dd [参数]
【if】 输入的文件名
【of】 输出的文件名
【bs】 设置每个‘块’的大小
【count】设置要复制‘块’的个数
例: dd if=/etc/wicked of=aa bs=100M count=3
split -b [大小{10M}] <文件名> 《分解后文件名开头》
cat <文件名1><文件名n> > <合成文件名>
paste <文件名1><文件名n> 合并两个文件内容
file 查看文件类型
time <命令> 查看命令用时
显示环境变量 echo$环境变量名
/etc/profile 影响所有用户
su
1、完全身份转换
su - 用户名
2、部分身份转换
su 用户名
~/.bash_profile 影响当前用户
echo -n 不换行
echo $ SHLVL 查看shell层
env 显示所有变量(可以筛选)
写入全局变量:
export <全局变量名> = " 内容 "
pwd;data;date; 【顺序输出 返回值为最后一个】
pwd && data && date 【遇到错误输出】
pwd || data || date 【遇到正确输出】
echo $ ? 查看返回值
sync 同步缓冲 【保存当前信息】
chgrp 【组名】【文件名】 修改文件所在的组
chown 【用户名】【文件名】 修改文件的所有者
chmod【权限-八进制】<文件名> 修改文件的权限
useradd 添加用户
userdel 删除用户
usermod 【-选项】【用户名】 一些属性的配置
-g 修改组
-d 修改目录
......
usermod [{选项}] <用户名>
选项:
-u<用户ID>
-d<家目录>
-g<主要主目录ID>
-G<附加组群ID,附加组群ID,....>
-s <登录SHELL>
-c <备注>
-a : 追加-G制定的附加组群
-l <新用户名>
touch 新建文件【-a“修改读取时间”,-m“修改时间”,-d“前二者同时修改”】{文件}
mkdir 创建目录【---选项】{目录}
sed -i 's|<被替换的内容>|<替换成的内容> | g’<目标文件名>
groupadd 【[-g gid [-o]] [-r] [-f] <组名>】
选项:
-g:指定新建工作组的 id;
-r:创建系统工作组,系统工作组的组ID小于 500;
-K:覆盖配置文件 "/ect/login.defs";
-o:允许添加组 ID 号不唯一的工作组。
-f,--force: 如果指定的组已经存在,此选项将失明了仅以成功状态退出。
当与 -g 一起使用,并且指定的GID_MIN已经存在时,选择另一个唯一的GID(即-g关闭)。
1)groupadd <文件名>
2)groupadd -g 555 <文件名>
3)groupadd -g 0 -0 <文件名>
groupdel <组名>
修改组属性:
1)groupmod -g 1666 <文件名>
2) groupmod -n <新文件名> <原文件名>
3) groupmod -n <新文件名> -g 1666 <原文件名>
查看组:
1)more /etc/group
2)cat /etc/group
加锁
passwd -l (用户名)
解锁
passwd -u(用户名)
修改密码
passwd (用户名)
删除密码
passwd -d (用户名)
通过其他方法改密码:
echo "密码" | passwd --stdin (用户名) |管道
alias
alias ='系统叠加的指令'
例如 alias < lo>='ls -ahl' 【不能有空格】
unalias 删除别名
ls -ll /etc/sudoers
yum -y install sudo
/etc/sudoers --->加一行 用户名 ALL = (ALL)ALL
打包) tar -cvf (打包名).tar (打包内容)
解包) tar -xvf(包名).tar
显示包) tar -tvf (包名)
压缩包{gzip型}) tar -czvf (压缩名).tar.gz(打包内容)
解压并解包) tar -xzvf (压缩包名)
压缩包{bzip2型}) tar -cjvf (压缩名).tar.bz2 (打包内容)
解压并打包) tar -xjvf (压缩包名)
【压缩】
gzip <文件名> <文件名>.gz 【gzip -d】解压
bzip2 <文件名> <文件名>.gz
xz <文件名> <文件名>.xz 【压缩效果最好】
xxd <二进制文件名> >
xxd -r > <二进制文件名> 【od查看二进制文件】
格式:grep [选项] [文件]
-b 将可执行文件当作文本文件来搜索
-c 仅显示找到的行数
-i 忽略大小写
-n 显示行号
-v 反向选择----仅列出没有“关键词的行”
格式 find [查找路径] 寻找条件 操作
-name 匹配名称
-user 匹配所有者
-group 匹配所有组
find <目标路径> -name “文件名”-exec rm -f {} \;
输入重定向
命令 < 文件 将文件作为命令的标准输入
命令 << 分界符 从标准输入中读入,直到遇见分界符才停止
命令 <文件1> 文件2 将文件1作为命令的标准输入并将标准输出都文件2
输出重定向
命令 > 文件
命令 2> 文件
命令 >> 文件
命令 2>> 文件
命令 >> 文件 2>&1 或 命令 &>> 文件
// 将标准输出与错误输出共同写入文件中(追加到原有内容的后面)
同时完成 一阶操作 | 二阶操作
(*): 匹配零个或多个字符
(?):匹配单个字符
与 · echo 连用
(\): 使反斜杠后边的一个变量变为单纯的字符串
("): 转义其中所有的变量为单纯的字符串
(""): 保留其中的变量属性,不进行转移处理
(``): 把其中的命令执行后返回结果
fdisk -l 列出系统中所有的储存设备
df -v 显示目前系统分区使用情况
fdisk -l 查看磁盘 与 USB盘分区
df -T 查看已挂载分区的使用情况
du -sh /etc统计目录占用磁盘大小
VIm编辑器的使用网上有
编写shell脚本“文件名.sh”
【新建一个虚拟磁盘;fdisk -l查看磁盘地址;fdisk / */*分配区间;(mkfs.xfs格式化 +路径)
mkdir /*创建个目录与磁盘构建关联 mount /*/*(磁盘路径) /* 目录名;df -h或-v查看;
vim /etc/fstab ,进行输入磁盘路径永久挂载 (卸载则删除输入的路径)
【查看CPU运行时间】
uptime
more /proc/cpuinfo 查看CPU 的参数指标
sar -u ALL 10 5 以 10s 为周期,连续统计5次CPU的(使用情况)
top
-----------------------------------------------
【查询内存使用方面的简要信息】
free
more /proc/meminfo 查看内存的参数指标
vmstat 20 8 以 20s ,8次 内存的(动态使用情况)
sar -r 30 60 以 30s,60次内存(使用情况)
-----------------------------------------------
nice -n <优先级> <命令>
nice -n -15 ls -R / 以优先级 -15 运行程序 ls -R
renice 调整进程的优先级
renice 等很多【组、用户、进程号】
kill <信号> <目标>
临时退出 ctrl +z
放置后台 &
暂停 bg 【页面】
前台显示 fg 【页面】例如:【+1】
查看后台进程 jobs
nohup <指令> 后台执行脱离用户登陆终端
1)修改 vim /etc/ssh/sshd_config
2)修改 PermitRootLogin 【yes | no】允许 | 禁止 默认yes
3)重启该服务:systemctl restart sshd
4)使可行:systemctl enable sshd
5)指令:ssh <地址 | 服务链接> 提示错误
1)添加秘钥:ssh-keygen a.回车 b.密码 c.再次输入密码
2)传送给远程主机:ssh-copy-id <主机地址>
3)修改 vim /etc/ssh/sshd_config
4)修改PubkeyAuthentication 【输入钥匙即可登录】是否开启 默认no
4)修改passwordAuthentication 【没钥匙必须要有密码验证】| 验证 默认yes
5)重启该服务:systemctl restart ssh
6)指令:ssh <地址 | 服务链接> 密码验证直接登录(无需输入root密码)
【参数】
-a 检测设备名称
-n 指定设备数量
-l 指定RAID级别
-C 创建
-v 显示过程
-f 模拟设备损坏
-r 移除设备
-Q 查看摘要信息
-D 查看详细信息
-S 停止RAID磁盘列阵
-x 代表有一块备份盘
1)预设好五个虚拟磁盘
2)fdisk -l | more 查看 磁盘名称
3)创建mdadm -Cv /dev/md0 -a yes -n 4 -l 10 <四个磁盘名称(注前者名称可更改)>
4)格式化 mkfs.ext4 /dev/md0
5)创建挂载点并挂载 mkdir /RAID
mount /dev/md0 /RAID
df -h 【查看挂载情况】
6)查看磁盘列阵信息mdadm -D /dev/md0
7)永久挂载磁盘 echo "/dev/md0 /RAID /ext4 defaults 0 0" >> /etc/fstab
1)模拟一个磁盘损坏 mdadm /dev/md0 -f <损坏的磁盘>
2)mdadm -D /dev/md0
3)修复磁盘 umount /RAID
mdadm /dev/md0 -a <需要安装的磁盘>
mdadm -D /dev/md0
mount -a
1)创建mdadm -Cv /dev/md0 -n 3 -l 5 -x 1 <四个磁盘名称(注前者名称可更改)>
2)与后与前{一、二}类同
3)模拟损坏查看后会有 一个faulty 的磁盘
crontab -e
一次性定时任务:指令 at
at [-f file] time
at now +10 minutes <<< “wall lil.txt” 再过10分钟广播文件lil.txt
at <22:22><月/日/年>
at >可写很多内容,【未来的事,规定的时间去做】
at >
Ctrl+D ==
at -f /opt/file.cmd 4am tomorrow 明天上午四点执行 .cmd中的命令
at -l 列出全部的一次性定时任务
at -r 6 删除6 号定时任务
batch <<< "bzip2 -9 bigfile.dat" 在系统平均负载较低(<1.5)时执行压缩命令
IPtables:
-L 查看规则链 等【https://blog.51cto.com/doublelinux/1960912】
-F 删除规则链
ping -c <次数> 查看动态网络数据
iptables -P INPUT DROP 规则链设置为拒绝状态
iptables -P INPUT -p icmp -j ACCEPT 规则链设置为允许状态
iptables -D INPUT 1 删除刚加入的规则链
iptables -P INPUT ACCEPT 设置默认允许状态
量:
iptables -I INPUT -s 192.168.43.137/24 -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -j REJECT
iptables -I INPUT -p tcp --dport 12345 -j REJECT
iptables -I INPUT -p upd --dport 12345 -j REJECT
iptables -I INPUT -p tcp -s 192.168.43.169 --dport 80 -j REJECT
iptables -A INPUT -p tcp --dport 1000:1024 -j REJECT
iptables -A INPUT -p upd --dport 1000:1024 -j REJECT
使防火墙永久生效:
service iptables save
firewalld:
firewall-cmd --get-default-zone 查看当前使用域
等等。。。。
nmtui 命令运行网络配置工具【修改手动】
systemctl restart network 【重启服务】
nmcli connection show 【查看网络信息或网络状态】
变量:
a = 10
a = user/bin
echo $a
自定义变量:
环境变量:
数组:
U = (342 342 342 432)
${U[1]} 第2个元素 342
${U[*]} 显示所有元素
${#U[*]} 显示元素个数
${#U[2]} 第二个元素的个数
特殊变量:
$? 上一条shell命令执行结果,一般执行正确返回0,错误非零
$$ 执行当前shell的进程的进程号
$# 显示参数的个数
$0 命令本身
$1... 第几个参数
$* 全部参数
1、v1 =1 v2=2
let v2=v1+v2 或 let v3=$v1+$v2
echo $v3
2、$((v1+v2))
3、expr $v1 + $v2
引用:将命令的结果作为值来使用
v3 =`expr $v1 + $v2`
测试语句:
判断结果是真是假
===============================
if [。。] :then
语句序列
fi
===============================
if [。。] :then
语句序列一
else
语句序列二
fi
===============================
if [。。] :then
语句序列一
elif [。。]:then
语句序列二
elif [。。]:then
语句序列N
else
语句序列N+1
fi
===============================
case $ 1 in 【输入的第一个参数,符合某条件,输出某值】
[0-9]) echo "digital" ;;
[a-z]) echo "lower char" ;;
*) 【*)==default】
echo"other" ;;
esac
===============================
语法一:
for i in $*
do
echo -n $i
done
语法二:
total = 1
for(( i = 1; i<10 ;i =i+1) )
do
[ `expr $i % 2` -eq 0 ] && continue
total = `expr ${total} \* $i`
done
echo ${total}
===============================
while list ; do list ; done
1、function 函数名{。。}
2、函数名(){。。}