二、Linux系统漫谈(一)

一、Linux系统命令小结

1.调整系统时间

**针对Centos及Rocky安装NTP服务**
#yum -y install ntp
使用ntpdate同步系统时间
#ntpdate ntp.aliyun.com
将硬件时间(clock)与系统时间(date)同步
#hwclock -w 
将系统时间与硬件时间同步
#hwclock -s
**针对Ubuntu使用timedatectl工具**
修改系统日期时间
#timedatectl set-time "2017-01-23 10:30:00"
查看系统时间
#date
查看硬件时间
#hwclock
将硬件时间(hwclock)与系统时间(date)同步
#hwclock -w 
将系统时间与硬件时间同步
#hwclock -s

修改Linux系统时间的多种方法,可参考该博主分享http://t.csdnimg.cn/hNo7E,请大家多多支持!!

2.查看系统运行参数

**查看CPU信息**
#lscpu 
#cat /proc/cpuinfo 
**查看内存信息**
#free -h 
#cat /proc/meminfo 
**查看硬盘分区信息**
#lsblk
#cat /proc/partitions
**查看系统架构**
#arch 
**查看内核版本**
#uname -r
**查看操作系统发行版本**
#cat /etc/redhat-release
#lsb_release -a

3.文本处理工具

**查看文本文件内容**
#cat /data/test.txt

**显示行号**
#nl /data/test.txt 
     1	hello world
     2	how are u 
     3	i am fine thanks 
     4	and u
     
**逆向显示文本内容**
#tac /data/test.txt 

**分页查看文件内容**
#more

**显示文本前面行**
#head

**显示文本后面行**
#tail

**文本数据统计**
#wc

**文本排序**
#sort

**统计分区利用率**
#df

**去重**
#uniq

**比较文件**
#diff

3.1文本处理三剑客之grep

**grep主要对文本的(正则表达式)行基于模式进行过滤**
作用:文本搜索工具,根据用户指定的“模式”对目标文本逐行进行匹配检查;打印匹配到的行
模式:由正则表达式字符及文本字符所编写的过滤条件

**算出所有人的年龄总和**
#cat age.txt 
xiaoming=20
xiaohong=18 
xiaoqiang=22
#grep -oE '[0-9]+' /data/age.txt  | paste -s -d+ |bc
60

3.2文本处理三剑客之sed

**sed文本编辑工具**
同vi比较:sed在读取大文件时不会出现卡顿现象。如果使用vi打开几十M上百M的文件,明显出现卡顿现象
原因:vi命令打开文件是一次性将文件加载到内存,然后打开。sed是通过一行一行的处理,所以打开速度非常快,执行速度也很快。

3.3文本处理三剑客之awk

**awk在linux上实现gawk即文本报告生成器**
gawk通过模式扫描和处理语言,可以实现:文本处理;输出格式化的文本报表;执行算数运算;执行字符串操作

3.4正则表达式小结

**正则表达式分两类:基本正则表达式;扩展正则表达式**
基本正则表达式元字符:
. 匹配任意单个字符
[]匹配指定范围内的任意单个字符
[^]匹配指定范围外的任意单个字符
**匹配次数**
* 匹配前面的字符任意次
.* 任意长度的任意字符
**位置锚定**
^ 行首锚定,用于模式的最左侧
$ 行尾锚定,用于模式的最右侧
或者
\|
扩展正则表达式元字符:
. 匹配任意单个字符
[]匹配指定范围内的任意单个字符
[^]匹配指定范围外的任意单个字符
**匹配次数**
* 匹配前面的字符任意次
? 01+ 1次或多次
{} 匹配n次
{m,n}至少m,至多n次
**位置锚定**
^ 行首锚定,用于模式的最左侧
$ 行尾锚定,用于模式的最右侧

4.SHELL变量小结

4.1变量命名法则

**命名要求:**
1、区分大小写
2、不能使程序中的保留字和内置变量:如iffor
3、只能使用数字、字母及下划线,且不能以数字开头,注意不支持短横线“-”,和主机名相反
**命名习惯:**
1、见名知意,用英文单词命名,并体现出实际作用,不要用简写
2、变量名大写
3、局部变量小写
4、函数名小写
5、大驼峰即由多单词组成,且每个单词的首字母是大写,其他小写
6、小驼峰即由多单词组成,第一个单词的首字母小写,后续每个单词的首字母是大写,其他小写
7、下划线:mage_du

PS:删库跑路命令之rm的安全实现

[23:18:57 root@MarkDZ scripts]#cat rm.sh 
#!/bin/bash
WARNING_COLOR="echo -e \E[1;31m"
END="\E[Om"
DIR=/tmp/`date +%F_%H-%M-%S`
mkdir $DIR
mv $* $DIR
${WARNING_COLOR}Move $* to $DI
[23:18:57 root@MarkDZ scripts]#chmod a+x /data/scripts/rm.sh 
[23:20:10 root@MarkDZ scripts]#alias rm='/data/scripts/rm.sh' 
[23:20:27 root@MarkDZ scripts]#touch {1..10}.txt
[23:20:48 root@MarkDZ scripts]#rm *.txt
Move 10.txt 1.txt 2.txt 3.txt 4.txt 5.txt 6.txt 7.txt 8.txt 9.txt to /tmp/2024-01-30_23-20-55 m
[23:20:55 root@MarkDZ scripts]#ls -ha /tmp/2024-01-30_23-20-55/
.  ..  10.txt  1.txt  2.txt  3.txt  4.txt  5.txt  6.txt  7.txt  8.txt  9.txt

PS:鸡兔同笼,30个头、80只脚,问:鸡兔数量?

[21:23:01 root@MarkDZ scripts]#cat chook_rabbit.sh 
#!/bin/bash
HEAD=$1
FOOT=$2
RABBIT=$(((FOOT-HEAD-HEAD)/2)) 
CHOOK=$[HEAD-RABBIT]
echo RABBIT:$RABBIT
echo CHOOK:$CHOOK
[21:24:20 root@MarkDZ scripts]#bash chook_rabbit.sh 30 80 
RABBIT:10
CHOOK:20
答:10只兔、20只鸡

4.2不同类型变量如何使用

set:显示已定义的所有变量
unset:删除变量
4.2.1环境变量
1、可以使子进程(包括孙子进程)继承父进程的变量,但是无法让父进程使用子进程的变量
2、一旦子进程修改从父进程继承的变量,会将新的值传递给孙子进程
3、一般只在系统配置文件中使用,在脚本中较少使用
4.2.2只读变量
1、只能声明定义,但后续不能修改和删除
4.2.3位置变量
1、在bash shell中内置的变量,在脚本代码中调用通过命令行传递给脚本的参数

5.编程的for循环

结合编程的f环,条件测试,条件组合,完成批量or循创建100个用户。
1)for遍历1…100
2)先id判断是否存在
3)用户存在则说明存在,用户不存在则添加用户并说明已添加。

[22:17:28 root@MarkDZ scripts]#cat createuser.sh
#!/bin/bash
for i in {1..100} ;do
	useradd user$i
	id $user &> /dev/null && echo user$i is exist || { useradd user$i ; echo user$i is created; }
done

6.磁盘存储术语总结

1、磁头(head):一个盘面对应一个磁头
2、磁道(track):盘面上的每一圈就是一个磁道
3、扇区(sector):把每个磁道按512bytes大小再进行划分,每个磁道上的扇区数量是不一样的
4、柱面(cylinder):磁头移动的时候,是一起移动的,如果是6个盘面,则6个磁头对应的磁道是一致的

7.MBR、GPT结构总结

1MBR(Master Boot Record):32bit表示扇区数,分区不超过2T
划分分区的单位:
centos5之前按整柱面划分
centos6后可以按sector划分
0磁道0扇区:512bytes
446bytes:boot loader启动相关
64bytes:分区表,其中每16bytes标识一个分区
2bytes:55AA,标识位
2、GPT:GUID(Globals Unique Identifiers)partition table支持128个分区,使用64bit,支持8Z(512Byte/block)64Z(4096Byte/block)
使用128bitUUID(Universally Unique Identifier)表示磁盘和分区,GPT分区表自动备份在头和尾两份,并有CRC校验位
UEFI(Unified Extensible Firmware Interface统一可扩展固件接口)硬件支持GPT,使得操作系统可以使用
GPT分区结构分为4个区域:
GPT头、分区表、GPT分区、备份区域

7.1管理分区命令小结

fdisk:管理MBR分区
gdisk:管理GPT分区
parted:高级分区操作,可以是交互或非交互方式
partprobe:重新设置内存中的内核分区表版本,除centos6以外的其他版本
mkfs -t:创建文件系统,指定文件系统类型
findfs:查找分区
tune2fs:重新设定ext系列文件系统可调整参数的值
xfs_info:显示xfs文件系统信息
fsck:文件系统修复(一定不要在挂载状态下执行下面命令修复) -a---自动修复 -r---交互式修复错误
mount:挂载文件系统 umount:卸载文件系统
swapon:启用swap分区 -a---激活所有的交换分区 -p---指定优先级
swapoff:禁用swap分区
[22:56:26 root@MarkDZ ~]#lsblk -p  #显示全路径
NAME                           MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
/dev/sda                         8:0    0  200G  0 disk 
├─/dev/sda1                      8:1    0    1G  0 part /boot
└─/dev/sda2                      8:2    0  199G  0 part 
  ├─/dev/mapper/rl_rocky8-root 253:0    0   70G  0 lvm  /
  ├─/dev/mapper/rl_rocky8-swap 253:1    0  2.1G  0 lvm  [SWAP]
  └─/dev/mapper/rl_rocky8-home 253:2    0  127G  0 lvm  /home
/dev/sr0                        11:0    1 1024M  0 rom 
NAME:设备名称 RM:是否可移动设备 SIZE:设备容量大小 TYPE:设备类型
RO:是否是只读设备  MOUNTPOINT:挂载点

[23:01:27 root@MarkDZ ~]#lsblk -f   #显示文件系统
NAME               FSTYPE      LABEL UUID                                   MOUNTPOINT
sda                                                                         
├─sda1             xfs               a63eedba-e2fc-4ed2-832c-24a0ab4ff575   /boot
└─sda2             LVM2_member       ZO58S4-L3S4-BuuD-gtqB-Tjre-VZ0K-SwbBSJ 
  ├─rl_rocky8-root xfs               4e854109-65f5-4225-8353-4c58ddc52ad3   /
  ├─rl_rocky8-swap swap              bcc17ece-4af8-4db5-96f7-5a9c729efe32   [SWAP]
  └─rl_rocky8-home xfs               1f7e268d-7990-433c-a9ca-382bcbb95903   /home
  • 10
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值