- 1.date
- 2.du(disk use)
- 3.df(disk free)
- 4.find
- 5.crontab
- 6.netstat
shell命令可以使用
man
查看命令文档说明,说明界面中可通过b
(backward)向上翻页,f
(forward)向下翻页,g
(go to)跳到说明首页,G
跳到说明尾页,/
+搜索字符搜索指定内容。
官方文档:https://www.gnu.org/software/coreutils/manual/html_node/
1.date
处理日期时间相关的命令,主要用到的参数-d
,根据-d的参数值获取指定的日期时间,省略该参数获取当前日期时间。
map@gzdt-map-poi-yingxiang-offline04 coordinate$ date +%Y%m%d
20240703
map@gzdt-map-poi-yingxiang-offline04 coordinate$ date -d 'last day' +%Y%m%d
20240702
map@gzdt-map-poi-yingxiang-offline04 coordinate$ date -d '-1 day' +%Y%m%d
20240702
map@gzdt-map-poi-yingxiang-offline04 coordinate$ date -d '-1 days' +%Y%m%d
20240702
map@gzdt-map-poi-yingxiang-offline04 coordinate$ date -d '+1 day' +%Y%m%d
20240704
map@gzdt-map-poi-yingxiang-offline04 coordinate$ date -d 'sunday' +%Y%m%d
20240707
map@gzdt-map-poi-yingxiang-offline04 coordinate$ date -d 'last sunday' +%Y%m%d
20240630
map@gzdt-map-poi-yingxiang-offline04 coordinate$ date -d 'last sunday -1 week' +%Y%m%d
20240623
格式化字符串中常用:
%Y:year
%m:month (01…12)
%d:day of month (01…31)
%H:hour (00…23)
%M:minute (00…59)
%S:second (00…60)
2.du(disk use)
查看目录的磁盘占用大小。
du -h --max-depth=1 ./
或者 du -h -d 1 ./
:查看当前路径下各目录及文件的大小,对于目录是递归累计大小的。不指定路径默认为当前所在目录。--max-depth=1
& -d 1
,一个长参数形式一个短参数形式,都是用来指定控制台输出时只输出顶层目录文件,不递归输出。
3.df(disk free)
也是用来查看磁盘使用情况的,和du
不同的是,关注的是磁盘和挂载点目录的使用情况(包括总大小和已使用),而非某个具体目录。
所以df -h
无论在哪个路径执行默认都是输出所有磁盘或磁盘分区及对应挂载点&挂载点目录的使用情况,如果指定目录路径,则会输出该目录路径所在挂载点的磁盘使用情况。
map@gzdt-map-poi-yingxiang-offline04 disk1$ df -h
文件系统 容量 已用 可用 已用% 挂载点
devtmpfs 126G 0 126G 0% /dev
tmpfs 126G 11M 126G 1% /dev/shm
tmpfs 126G 1.1G 125G 1% /run
tmpfs 126G 0 126G 0% /sys/fs/cgroup
/dev/sda2 19G 11G 6.6G 63% /
/dev/nvme1n1 917G 512M 917G 1% /ssd2
/dev/nvme0n1 917G 26G 892G 3% /ssd1
/dev/sda1 952M 9.9M 942M 2% /boot/efi
/dev/sda6 1.9G 425M 1.4G 24% /has
/dev/sda5 4.6G 765M 3.7G 18% /matrix
/dev/sda3 14G 1.4G 12G 11% /var
/dev/sda4 14G 1.7G 12G 13% /noah
/dev/sda8 3.6T 3.1T 518G 86% /home
/dev/sdc1 3.6T 3.2T 480G 87% /home/disk2
/dev/sdb1 3.6T 1.1T 2.6T 30% /home/disk1
/dev/sdd1 3.6T 3.4T 215G 95% /home/disk3
/dev/sde1 3.6T 3.4T 267G 93% /home/disk4
/dev/sda7 6.5G 4.6G 1.5G 76% /tmp
none 800M 152M 649M 19% /noah/download
none 800M 597M 204M 75% /noah/modules
none 400M 128K 400M 1% /noah/tmp
none 100M 0 100M 0% /noah/bin
tmpfs 26G 0 26G 0% /run/user/1006
tmpfs 26G 0 26G 0% /run/user/0
afs_mount 96P 68P 28P 71% /home/dfs/map_data_aoi
map@gzdt-map-poi-yingxiang-offline04 disk1$ df -h /home/disk1/map/
文件系统 容量 已用 可用 已用% 挂载点
/dev/sdb1 3.6T 1.1T 2.6T 30% /home/disk1
挂载点:可以理解为物理磁盘或物理磁盘的某个分区在文件系统中的入口,通过挂载点入口目录管理物理磁盘或分区中的内容。
4.find
find命令可以用来查找机器上的文件,一种比较常用的查找方式为find / -name "*filename* 2>/dev/null"
,表示从根路径下查找文件名包含filename的文件,后面的 2>/dev/null 表示忽略权限错误输出。
这个命令特别需要注意下传递给-name参数的值*filename*
,加引号和不加引号的区别:
- 加引号:则
*filename*
这个字符串会作为整体传递给name参数,由find命令来解释特殊字符*
的含义,表示从指定路径下搜索所有包含filename的文件或文件夹,和搜索预期一致。- 不加引号:会先对
*filename*
中特殊含义的字符如*
在命令执行路径下(非查找路径) 下进行拓展,查找该路径下是否存在可以匹配*filename*
的文件,存在时就将第一个可以匹配的文件名传递给name,此时相当于按照第一个可以匹配的文件名精确查找了。不存在匹配结果时会和不加引号时一样将原字符串作为整体传递给name,此时加不加引号对于结果没影响。
引号测试:
map@gzdt-map-poi-yingxiang-offline04 test$ tree dir1
dir1
├── dir2
│ └── file2
└── file1
1 directory, 2 files
# dir1下模糊查找所有包含 file 的文件文件夹
map@gzdt-map-poi-yingxiang-offline04 dir1$ find ./ -name "*file*"
./dir2/file2
./file1
# dir1路径下file1匹配,所以实际查找效果相当于:find ./ -name file1
map@gzdt-map-poi-yingxiang-offline04 dir1$ find ./ -name *file*
./file1
# 当命令执行路径下不存在匹配文件时,效果等同于加引号
map@gzdt-map-poi-yingxiang-offline04 dir1$ ll .. | grep file
map@gzdt-map-poi-yingxiang-offline04 dir1$ cd .. && find ./ -name *file*
./dir1/dir2/file2
./dir1/file1
如果文件名较复杂,也可以通过-regex
进行正则查找:
在find种正则查找时是全路径匹配,也就是当查找某个文件时,给出的正则必须要能满足对该文件的全路径进行匹配,而不是仅匹配文件名。
map@gzdt-map-poi-yingxiang-offline04 dir1$ find ./ -regex "file.*"
map@gzdt-map-poi-yingxiang-offline04 dir1$ find ./ -regex ".*file.*"
./dir2/file2
./file1
5.crontab
该命令用来做定时任务。默认每个用户在/var/spool/
路径下都拥有一个和自己同名的crontab文件,通过编辑该文件进行任务的设置。
使用提供的crontab命令打开文件编辑,而非直接编辑。编辑完成后和vim编辑器一样
:wq
保存修改,服务会自动重新读取文件中的任务。
相关命令:
systemctl status crond # 查看服务状态
systemctl start crond # 启动服务
systemctl stop crond # 关闭服务
crontab -e # 打开任务文件
crontab -l # 显示当前已有的定时任务
时间配置一般格式都是* * * * * command
这样,前面5个*
的位置用来设置任务执行时间,后面跟上需要执行的命令。
*
所在的5个位置从前到后分别表示分钟(0~59)、小时(0~53)、日期(1~31)、月份(1~12)、星期(1~6周一~周六;0周日),为*
时表示所有时刻。例如0 0 * * 5
表示每个周五的0点0分开始执行。
还有3个特殊的字符了解一下:
/
、-
、,
。
/
表示per(每个时间单位间隔)的意思
-
指定连续的时间范围
,
指定离散的时间范围
6.netstat
用来查看网络相关信息。常用参数:
-n:以数字形式显示地址和端口号,不将端口号转换为服务名。
-t:仅显示TCP端口。
-u:仅显示UDP端口。
-l:仅显示处于LISTEN状态的端口,即那些正在等待新连接的套接字。