swap操作
1、启用swap 在内存使用超过60的时候
vim /etc/sysctl.conf 修改为vm.swappiness=60
sysctl -p
2、生成swap文件
dd if=/dev/zero of=/swap bs=1024 count=8388616
mkswap /swap
3、设置开启启动swap
echo "/swap swap swap defaults 0 0" >> /etc/fstab
4、启动swap
swapon -a
5、查看swap情况
free -m
screen
echo $STY
系统
- 查看cpu信息
cat /proc/cpuinfo
- 查看linux版本
cat /etc/redhat-release
输出重定向
用户和权限相关
- 添加用户
useradd zhangsan
- 添加用户密码
passwd zhangsan
- 添加用户登录权限
vi /etc/passwd 将/sbin/nologin 改为 /bin/bash
r 查看的权限 包括查看文件和文件夹的权限
w 写权限 删除权限
x 打开目录权限 执行文件权限
删除一个文件,必须对所属目录拥有读写执行的权限
u+s 限定文件执行时用户为文件所有者
g+s 限定文件夹内添加的新文件所属者为文件夹所有者
o+t 限定文件删除者必须为文件的所有者或所属组,其它人无权限删除
时间设置
// 设置日期时间
date -s "2022-02-19 00:32:27"
// 设置时区
执行tzselect命令 依次选择asia -> china->beijing 完成配置,并将 TZ="Asia/Shanghai"; export TZ 追加到/etc/profile文件末尾,source /etc/profile生效
// 时间同步插件nptdate
// 检查有没有安装nptdate
systemctl list-unit-files | grep nptdate
没有安装
yum install nptdate
// 加入系统服务并启动
systemctl enable nptdate&& systemctl start nptdate
//同步时间
ntpdate time.nist.gov 或者ntpdate time.nuri.net
硬件时钟与系统时钟同步(暂时没用到,记录一下):
#hwclock --hctosys hc代表硬件时间,sys代表系统时间,即用硬件时钟同步系统时钟
#hwclock --systohc 即用系统时钟同步硬件时钟 等于hwclock -w 执行这个命令没有任何反馈信息
系统服务
- /usr/lib/systemd/system 目录下添加脚本zookeeper.service:
[Unit]
Description=zookeeper
[Service]
Type=forking
User=root
LimitNOFILE=100000
LimitNPROC=100000
ExecStart=/usr/local/kafka/bin/zookeeper-server-start.sh -daemon /usr/local/kafka/config/zookeeper.properties
ExecStop=/usr/local/kafka/bin/zookeeper-server-stop.sh
[Install]
WantedBy=multi-user.target
- 查看启动项
systemctl list-unit-files | grep enable
- 添加开机启动
systemctl enable zookeeper
- 禁用开机启动
systemctl disable zookeeper
- 备份数据库(带日期)
mysqldump -h 127.0.0.1 -u admin -ppassword my_db > `date +%Y%m%d`.sql
- 查看服务日志
journalctl -u 服务名
date相关函数
date -d "10 day ago" "+%Y-%m-%d %H:%M:%S"
参考:
https://www.cnblogs.com/sharpest/p/10390029.html
杂项
1、转义符号: “”
2、脚本执行中,读取shell输入: read 变量名
3、显示换行:echo -e “OK! \n” # -e 开启转义
4、输出命令执行结果:echo date
5、
[
a
+
b
]
进行对数值进行基本算数运算
6
、
v
a
l
=
‘
e
x
p
r
2
+
2
‘
对数值或变量进行基本数学运算,可以用
[a+b] 进行对数值进行基本算数运算 6、val=`expr 2 + 2` 对数值或变量进行基本数学运算,可以用
[a+b]进行对数值进行基本算数运算6、val=‘expr2+2‘对数值或变量进行基本数学运算,可以用((
a
+
a+
a+b))替换
7、变量名和等号之间不能有空格:a=张三
8、推荐给所有变量加上花括号,这是个好的编程习惯。
9、通过语句赋值:
for file in ls /etc
或
for file in $(ls /etc)
10、获取命令行参数:$0,$1,
2...
获取命令行参数个数:
2... 获取命令行参数个数:
2...获取命令行参数个数:#
获取字符串长度:KaTeX parse error: Expected '}', got '#' at position 2: {#̲name} 获取数组长度:…{#name[]}" 或 "KaTeX parse error: Expected '}', got '#' at position 2: {#̲name[@]}" 获取数…{name[]}" 或 "
n
a
m
e
[
@
]
"
/
/
前者整体输出,后者依次输出获取数组的值:
{name[@]}" // 前者整体输出,后者依次输出 获取数组的值:
name[@]"//前者整体输出,后者依次输出获取数组的值:{name[0]}
11、let可以用(())替代,let必须是完整的算术表达式,即有等号两边
12、删除当前目录下大于1M的日志文件 ll | egrep '*.log' | awk '{if($5>1024*1024) print $9}' | xargs rm
13、$?返回最后一个命令的执行结果 0成功 非0失败
14、/bin/true 函数返回0 /bin/false 函数返回1 也可以作为 0 / 1的替代写法来使用
字符串截取
1、正则截取
假设:url=http://www.baidu.com/blog
1、#*[char] :从左边开始截,非贪婪,即第一个char前面的所有(含char)被删除
结果:
2、#[char]: 从左边开始截,贪婪,即最后一个char前面的所有(含char)被删除
3、%[char]: 从右边开始截,非贪婪,即第一个char后面的所有(含char)被删除
4、%%[char]*: 从右边开始截,贪婪,即最前一个char后面的所有(含char)被删除
2、位置截取
假设 name=123456.789K
1.开始位置2,长度不设置
2.开始位置不设置,结束位置-3
3.开始位置1,长度4
4.开始位置1,结束位置-1
service(服务)
// 首先编写php脚本test.php
<?php
while (true) {
echo 'hello world'.PHP_EOL;
sleep(2);
}
// 在/etc/init.d下 编写service shell
#!/bin/bash
SERVERNAME="/root/test.php"
start()
{
echo "start $SERVERNAME"
php $SERVERNAME > /root/my-test.log &
echo "start $SERVERNAME ok!"
exit 0;
}
stop()
{
echo "stop $SERVERNAME"
pids=`ps -ef | grep $SERVERNAME | grep -v grep | cut -c 9-15`
for pid in ${pids[*]}
do
echo $pid
kill -15 $pid
done
exit 0
}
echo '$1='$1
case $1 in
start)
start
;;
stop)
stop
;;
restart)
stop
start
;;
*)
echo "usage: $0 start|stop|restart"
exit 0;
esac
exit
服务管理的两种方式
1、不通过systemd(不推荐)(因为是centos7,默认使用systemctl管理服务)
systemctl daemon-reload // 刷新一下systemctl配置
systemctl start test // 启动
systemctl stop test // 停止
systemctl restart test // 重启
2、(推荐)通过通过systemd管理服务,可实现服务监控,自动重启的高级功能
注意:不需要编写ExecStop和ExecReload,systemd会帮你监控你正在运行的进程组
[Unit]
Description=my test service
[Service]
Type=forking
ExecStart=/usr/local/bin/my-test.sh start
// ExecStop不是用来停止服务的,停止服务用systemctl stop命令就可以,这个是停止服务的时候附加的操作,所以如果是单纯停止服务,可以不用设置
// ExecStop=/usr/local/bin/my-test.sh stop
// ExecReload不是重启服务的,重启服务用systemctl restart就可以了,ExecReload是用来重新加载服务的配置文件的,比如nginx等,所以如果是单纯重启服务,不需要配置该项
//ExecReload=/usr/local/bin/my-test.sh reload
Restart=on-failure // 服务失败的时候,自动重启,如果是主动停止,比如systemctl stop/kill 命令停止服务,不会触发重启机制
RestartSec=5 // 服务失败后多久重启
KillMode=control-group // 停止行为默认关闭父子进程组
[Install]
WantedBy=multi-user.target // 运行等级,multi-user.target 是启动级,不进行登录认证
systemctl常用命令
-启动一个服务
$ systemctl start 服务名
-立即停止一个服务
$ systemctl stop 服务
-重启一个服务
$ systemctl restart 服务
-杀死一个服务的所有子进程
$ systemctl kill 服务 // 等同于 systemctl stop 服务名
-重新加载一个服务的配置文件
$ systemctl reload apache.service
-重载所有修改过的配置文件
$ systemctl daemon-reload
-显示某个 Unit 的配置参数
$ systemctl cat httpd.service
-显示某个 Unit 的所有底层参数
$ systemctl show httpd.service
-显示某个 Unit 的指定属性的值
$ systemctl show -p CPUShares httpd.service
-设置某个 Unit 的指定属性
$ systemctl set-property httpd.service CPUShares=500
缓存释放 buff/cache
echo 1 > /proc/sys/vm/drop_caches:表示清除pagecache。
echo 2 > /proc/sys/vm/drop_caches:表示清除回收slab分配器中的对象(包括目录项缓存和inode缓存)。slab分配器是内核中管理内存的一种机制,其中很多缓存数据实现都是用的pagecache。
echo 3 > /proc/sys/vm/drop_caches:表示清除pagecache和slab分配器中的缓存对象。
less命令
空格 前进1页
b 倒退1页
d前进半页
u倒退半页
enter 前进1行
y 倒退1行
/ 向下查找
: 向上查找
n 重复之前的查找
shift + n 反向重复之前的查找
磁盘相关:
** 命令:**
df -hT 查看磁盘文件大小和类型
lsblk 查看磁盘设备
fdisk 磁盘分区
物理卷扩容
yum install cloud-utils-growpart -y //安装growpart工具
growpart /dev/sda 3 // 对sda磁盘的第三个分区进行扩容
resize2fs /dev/vda3 // ext{2,3,4}更新文件系统容量
xfs_growfs /dev/vda2 // xfs更新文件系统容量
逻辑卷扩容
增加分区
启动VMware环境下的Linux操作系统,添加新分区,需要root账号身份。
1 【fdisk -l】 最大分区为/dev/sda3,说明新创建的分区将会是sda4
2 输入【fdisk /dev/sda】
3 命令行提示下输入【m】
4 输入命令【n】添加新分区。
5 输入命令【p】创建主分区。
6 输入【回车】,选择默认大小,这样不浪费空间
7 输入【回车】,选择默认的start cylinder。
8 输入【w】,保持修改
9 输入【reboot】 重启linux,必须reboot,否则/dev/sda4无法格式化。
10 这时在/dev/目录下,才能看到了新的分区比如/dev/sda4
11【mkfs.ext2 /dev/sda4】格式化为ext2 /ext3/ext4 xfs等
12 在根目录下创建disk4目录
13 【mount /dev/sda4 /disk4/】将分区mount到根目录的/disk4/上
14 在vim修改/etc/fstab文件,加入【/dev/sda4 /disk4 ext2 defaults 0 0】一行,并保存,实现开机自动mount。
网络监控
1.根据网卡
yum install -y nload
sudo nload -m
sudo nload eth0 -m
2.根据ip
yum -y install iftop
iftop
=>代表发送数据
<=代表接收数据
TX:发送流量
RX:接收流量
TOTAL:总流量
Cumm:运行iftop到目前时间的总流量
peak:流量峰值
rates:分别表示过去 2s 10s 40s 的平均流量
3.根据进程
yum -y install nethogs
nethogs