【Linux】笔记分享

news2024/10/6 10:29:42

目录

  • - 前言
  • - 目录结构
  • - 磁盘文件系统
  • - 文件权限
    • + ls -l 的内容
      • 文件及目录权限实际案例
    • + 修改权限 -chmod[change ...]
      • 第一种方式:+ 、-、= 变更权限
      • 第二种方式:通过数字变更权限
    • + 修改文件所有者 -chown
    • + 修改文件所在组 -chgrp
  • - 命令类型
      • 基础命令
      • 网络
      • 性能
      • 安全与攻防
  • - 命令分解
    • + 实用命令
      • cut命令:
      • grep命令:
      • awk命令:
      • lsof命令:
      • 输出流重定向:
    • + 磁盘相关命令
      • df命令:
      • du命令:
      • fdisk命令:
      • file命令:
      • 其它命令:
    • + 进程相关命令
      • ps命令:
      • top命令:
      • pidof命令:
      • pstree命令:
      • pgrep命令:
      • 关于端口:
    • + 定时命令 crond
  • - Shell
    • + 判断文件是否存在
  • - 在线网页推荐
  • - 学习参考

- 前言

本文大量内容适用于linux已入门的人群。

- 目录结构

/ 根目录
/root root超级用户家目录
/home 普通用户的家目录
/dev 硬件设备
/boot 启动文件
/media 空目录,挂在光盘
/mnt 空目录,仅供测试
/etc 配置文件
/var 日志文件
/tmp 临时文件夹
/bin 所有用户都可以执行的程序
/sbin root用户可以执行的程序
/usr 建议软件安装目录
/lost+fount 系统异常产生错误,错误碎片会存放
/sbin 可执行二进制文件
/usr 可执行二进制文件
/proc 此目录的数据都在内存中 所以不占用磁盘空间


- 磁盘文件系统

目前Ext4(Extended File sytem,扩展文件系统)是广泛使用的一种磁盘文件系统格式。是在Ext3基础上发展起来的,对有效性保护、数据完整性、数据访问速度、向下兼容性等方面做了改进,其特点是日志文件系统:可将整个磁盘的写入动作完整地记录在磁盘的某个区域上,以便在必要时回溯追踪。

磁盘是一种计算机的外部存储器设备,由一个或多个覆盖有磁性材料的铝制或玻璃制的碟片组成,用来存储用户的信息,这种信息可以反复地被读取和改写。磁盘主要分为一下几类:

  • IDE磁盘:Integrated Drive Electronics,价格低廉,兼容性强,性价比高,但是数据传输慢,不支持热插拔等
  • SCSI磁盘:Small Computer System Interface,传输速率高,读写性能好,运行稳定,可连接多个设备,支持热插拔,占用CPU低,但是价格相对较贵,一般用于工作站或服务器上
  • SATA磁盘:Serial Advanced Technology Attachment,结构简单、支持热插拔

Linux中硬盘以及分区等设备均表示为文件,其命名规则如下:

  • IDE磁盘的文件名为        /dev/hdxxx
  • SCSI/SATA/USB磁盘文件名为    /dev/sdxxx

在这里插入图片描述下面是一些具体的命名实例:

/dev/hda          #表示第一个IDE硬盘
/dev/hda1         #表示第一块IDE硬盘的第一个主分区
/dev/hda2         #表示第一块IDE硬盘的扩展分区(或第二个主分区)
/dev/hda5         #表示第一块IDE硬盘的第一个逻辑分区
/dev/hda8         #表示第一块IDE硬盘的第四个逻辑分区
/dev/hdb          #表示第二个IDE硬盘
/dev/sda          #表示第一个SCSI硬盘
/dev/sda1         #表示第一个SCSI硬盘的第一个主分区
/dev/sdd3         #表示第四个SCSI硬盘的第三个主分区

为了便于管理和使用,通常会对磁盘进行分区。

  • 主分区:必须要存在的分区,最多能创建4个,最少1个,编号只能是1 - 4 (比如sda1、sda2、sda3、sda4),可以直接格式化,然后安装系统,直接存放文件
  • 扩展分区:会占用主分区位置,即主分区+扩展分区之和最多4个。相当于独立的磁盘,有独立的分区表,但不能独立的存放数据
  • 逻辑分区:扩展分区不能直接存放数据,必须经过再次分割成为逻辑分区后才能存放数据。一个扩展分区中的逻辑分区可以有任意多个,编号只能从5开始

下图中的分区方案为:2个主分区 + 1个扩展分区的结构,其中扩展分区又分割出了2个逻辑分区
在这里插入图片描述
交换分区(swap):安装系统时建立的,一块特殊的硬盘空间,当实际内存不够用时,操作系统会从内存中取出部分暂时不用的数据,放在swap中,为当前程序腾出足够的内存空间。swap不会使用到目录树的挂载,无需指定挂载点(即cd无法进入)


- 文件权限

+ ls -l 的内容

图示:
在这里插入图片描述

描述
   -rwxrw-r– 1 root police 1213 Feb 2 09:39 abc.txt
说明

  1. 第0位确定文件类型(说明: -:普通文件, d:目录,l : 连接文件, c: 字符设备文件[键盘,鼠标] b: 块设备文件[硬盘] ) 。
  • [d]:目录
  • [-] :文件
  • [l]:连结档(link file);
  • [b]:装置文件里面的可供储存的接口设备(可随机存取装置)
  • [c]:装置文件里面的串行端口设备,例如键盘、鼠标(一次性读取装置)
  1. 第1-3位确定所有者(该文件的所有者)拥有该文件的权限。 R: 读 , w : 写权限 x: 执行权限 (-表示没有)

  2. 第4-6位确定所属组(同用户组的)拥有该文件的权限 。

  3. 第7-9位确定其他用户拥有该文件的权限 。

  4. 1: 如果是文件,表示硬链接的数目, 如果是目录,则表示有多少个子目录 。

  5. root: 文件或者目录所有者。

  6. police: 文件或者目录所在的组。

  7. 1213 : 表示文件大小,如果是目录,则统一为 4096 。

  8. Feb 2 09:39 文件最后修改的时间。
    在这里插入图片描述在这里插入图片描述

文件及目录权限实际案例

ls -l 中显示的内容如下:

-rwxrw-r-- 1 root root 1213 Feb 2 09:39 abc
10个字符确定不同用户能对文件干什么

第一个字符代表文件类型: 文件 (-),目录(d),链接(l)

其余字符每3个一组(rwx) 读® 写(w) 执行(x execute)

第一组rwx : 文件拥有者的权限是读、写和执行

第二组rw- : 与文件所在组的用户的权限是读、写但不能执行

第三组r-- : 不与文件拥有者同组的其他用户的权限是读不能写和执行

可用数字表示为: r=4,w=2,x=1 因此rwx=4+2+1=7

1 文件:硬连接数或 目录:子目录数(有两个隐藏目录 .(代表当前目录) …(代码上级目录),所以你数的个数会少两个 )

root 用户

root 组

1213 文件大小(字节 多一个结束符),如果是文件夹,显示 4096字节 (并不是代表目录下面所有文件的大小,它代表的是目录本身所占空间的大小(目录是一种特殊的文件))

Feb 2 09:39 最后修改日期

abc 文件名

+ 修改权限 -chmod[change …]

在这里插入图片描述
基本说明:

通过chmod指令,可以修改文件或者目录的权限。

第一种方式:+ 、-、= 变更权限

u:所有者(user)  g:所有组(group)  o:其他人(other)  a:所有人(u、g、o的总和)(all)  
1) chmod   u=rwx,g=rx,o=x     文件、目录 【表示:给所有者rwx, 给所在组的用户 rx, 给其他人 x】  
2) chmod   o+w                文件、目录 【表示:给其它用户增加w 的权限】  
3) chmod   a-x                文件、目录    【表示:给所有用户 去掉 x权限】  

案例演示

  1. 给abc文件 的所有者读写执行的权限,给所在组读执行权限,给其它组读执行权限
    chmod u=rwx, g=rx ,o=rx abc (,之间不能有空格)

在这里插入图片描述
在这里插入图片描述

  1. 给abc文件的所有者除去执行的权限增加组写的权限 chmod u-x, g+w abc
    在这里插入图片描述
  2. 给abc文件的所有用户添加读的权限 chmod a+r abc

第二种方式:通过数字变更权限

思路一:
r=4 w=2 x=1

rwx=4+2+1=7

  chmod u=rwx,g=rx,o=x 文件、目录

  相当于 chmod 751 文件、目录 ( 7(rwx)5(rx)1(x) )

思路二:
比如要将文件修改为rwxrwxr- - 则
owner = r w x = 4 + 2 + 1 = 7
group = r w x = 4 + 2 + 1 = 7
other = r - - = 4 + 0 +0 = 4

案例演示

要求:将 /home/abc.txt 文件的权限修改成 rwxr-xr-x

rwx = 4+2+1 = 7

r+x = 4+1 = 5

r+x = 4+1 = 5

+、-、= 变更权限的方式实现: chmod u=rwx, g=xr, o=x /home/abc.txt

使用给数字的方式实现: chmod 751 /home/abc.txt

+ 修改文件所有者 -chown

基本说明:

chown  newowner  file  改变文件的所有者 
chown  newowner:newgroup  file  改变用户的所有者和所有组 
-R  如果是目录 则使其下所有子文件或目录递归生效 

案例演示:

  1. 请将 /home/abc.txt 文件的所有者修改成 tom chown tom /home/abc.txt
    在这里插入图片描述在这里插入图片描述

  2. 请将 /home/kkk 目录下所有的文件和目录的所有者修改成tom chown –R tom /home/kkk
    在这里插入图片描述在这里插入图片描述

  3. 将home下的所有文件和目录的所有者都改成 tom,将所在组改成police chown –R tom:police /home/
    chown tom:police /home/ –R

+ 修改文件所在组 -chgrp

基本说明:

chgrp newgroup file  改变文件的所有组 

案例演示:

  1. 请将 /home/abc .txt 文件的所在组修改成 shaolin (少林) chgrp shaolin /home/abc.txt
    在这里插入图片描述在这里插入图片描述
  2. 请将 /home/kkk 目录下所有的文件和目录的所在组都修改成 shaolin(少林)
    chgrp -R shaolin /home/kkk
    在这里插入图片描述

- 命令类型

基础命令

查找

man
help: 内建
whatis
which
whereis
find
locate
grep

目录

ls
pwd
cd
tree
mkdir
rmdir
rm

文件

cat
cp
od
stat
diff
sort
uniq
cut
comm
split
sed
awk
wc
paste
dc
bc

网络

ping
ifconfig
whois

性能

execsnoop

安全与攻防

openssl
nmap
tshark
kali

- 命令分解

+ 实用命令

cut命令:

cut命令:对输出信息按照某个分隔符进行切割,取其中的某一块,例如:

# 搜索占用9999端口的程序,如果是blender,则找到返回其进程id
lsof -i:9999 | grep blender | cut -d' ' -f2 
# 搜索占用9999端口的程序,如果是blender,则将其杀死
lsof -i:9999 | grep blender | cut -d' ' -f2 | xargs kill
cut -d' ' -f2 # 以空格为分隔符
cut -d: -f2 # 以:为分隔符

grep命令:

作用

Grep 筛选器在文件中搜索特定的字符模式,并显示包含该模式的所有行。在文件中搜索的模式称为 正则表达式. (grep 代表正则表达式的全局搜索和打印输出)。

语法

grep -options(参数) pattern(关键词) files(文本文件)

基本格式

ll | grep ".jpg" # 从当前目录中筛选出所有jpg文件的文件信息
ll | grep ".jpg" -c # 计算当前目录下jpg文件的总数,-c是统计匹配结果的行数
ll | grep ".jpg" -i # 从当前目录中筛选出所有非jpg文件的文件信息
ll | grep -E "j|p" # -E把双引号内的内容解释为正则表达式,从而可以用|号进行“或”匹配

主要参数

-c :只输出匹配模式的行数。
-h :只显示匹配的行,不显示文件名。
-i :忽略匹配时的大小写。
-l :只显示文件名列表。
-n :显示匹配的行及其行号。
-r :显示文件所在目录即路径。
-v :输出所有不匹配的行。
-e exp : 指定该选项的表达式,可以多次使用。
-f file :指定规则文件,其内容含有一个或多个规则样式,让grep查找符合规则条件的文件内容,格式为每行一个规则样式。
-E :将样式为延伸的正则表达式来使用。
-w :匹配整个单词。
-r :明确要求搜索子目录。
-d skip :忽略子目录。
-o :只打印匹配行的匹配部分,每个这样的部分在单独的输出行上。
\ :忽略正则表达式中特殊字符的原有含义。
[ ]:单个字符,如[A]即A符合要求。
[ - ]:范围,如[A-Z],即A、B、C一直到Z都符合要求。
.:所有的单个字符。
*:所有字符,长度可以为0。

-A n : 除了显示符合范本样式的那一行之外,并显示该行之后n行。
-B n : 除了显示符合范本样式的那一行之外,并显示该行之前n行。
-C n : 除了显示符合范本样式的那一行之外,并显示该行之前以及之后n行。

awk命令:

简介

awk是一种编程语言,用于在linux/unix下对文本和数据进行处理。数据可以来自标准输入(stdin)、一个或多个文件,或其它命令的输出。它支持用户自定义函数和动态正则表达式等先进功能,是linux/unix下的一个强大编程工具。它在命令行中使用,但更多是作为脚本来使用。awk有很多内建的功能,比如数组、函数等,这是它和C语言的相同之处,灵活性是awk最大的优势。

awk命令格式

awk [options] 'script' var=value file(s) 
awk [options] -f scriptfile var=value file(s) 

-F fs fs指定输入分隔符,fs可以是字符串或正则表达式
-v var=value 赋值一个用户定义变量,将外部变量传递给awk
-f scriptfile 从脚本文件中读取awk命令

其中script格式:awk脚本是由模式和操作组成的。

  • 模式,模式可以是以下任意一种:

    正则表达式:使用通配符的扩展集
    关系表达式:使用运算符进行操作,可以是字符串或数字的比较测试
    模式匹配表达式:用运算符~匹配和~!不匹配
    BEGIN语句块,pattern语句块,END语句块
    
  • 操作:

    操作由一个或多个命令、函数、表达式组成,之间由换行符或分号隔开,并位于大刮号内,
    主要部分是:变量或数组赋值、输出命令、内置函数、控制流语句。
    

awk脚本基本格式

awk 'BEGIN{ commands } pattern{ commands } END{ commands }' file 

// 一个awk脚本通常由BEGIN,通用语句块,END语句块组成,三部分都是可选的。 
// 脚本通常是被单引号或双引号包住。
awk 'BEGIN{ i=0 } { i++ } END{ print i }' filename
awk "BEGIN{ i=0 } { i++ } END{ print i }" filename

lsof命令:

lsof(list open files)用于查看进程打开的文件,是十分方便的系统监测工具。因为 lsof 命令需要访问核心内存和各种系统文件,所以需要 root 权限才可执行。
在 Linux 中,一切皆文件。通过文件不仅仅可以访问常规数据,还可以访问网络连接和硬件,所以 lsof 不仅可以查看进程打开的普通文件、目录,还可以查看进程监听的端口和 socket 等相关的信息。进程打开的每一个文件,系统在后台都会为之分配一个文件描述符,无论这个文件的本质如何。该文件描述符为应用程序与基础操作系统之间的交互提供了通用接口,因为应用程序打开的文件描述符列表提供了大量关于应用程序本身的信息,通过 lsof 能够查看这个列表,对系统监测以及排错很有帮助。

lsof 查看的打开文件可以是:

普通文件
目录
字符或块设备文件
共享库
管道、命名管道
符号链接
网络文件(如 NFS file、网络 socket,Unix 域名 socket)
其它类型的文件,等等

命令格式如下

lsof [OPTIONS] [--] [NAMES]

在没有任何选项的情况下,lsof 列出所有属于活动进程的打开文件。

示例说明
1、查看占用了tcp端口9999的进程是:lsof -i tcp:9999
2、查看使用了udp协议的进程是:lsof -i udp

输出流重定向:

在没有重定向之前,标准输出跟标准错误都默认输出到屏幕(terminal)上,重定向之后将它们保存到文件里面,并不再出现在屏幕上

command >> out.txt # 执行command命令,把标准输出保存到out.txt,标准错误仍打印到屏幕上
command 1>>out.txt 2>>err.txt # 执行command命令,把标准输出保存到out.txt,标准错误保存到err.txt
# 注意2跟>>中间不能有空格,如2 >>err.txt会报错,其他位置可以有空格
command >> join.txt 2>&1 # 执行command命令,把标准输出和标准错误都保存到join.txt(分析:先指定标准输出的重定向目标,而后把标准错误重定向到标准输出。2>&1一定要在>>的后面,次序颠倒会报错)
# 注意2跟>&中间不能有空格,其他地方无所谓
command >> /dev/null 2>&1 # /dev/null是一个特殊的文件,就像一个无底洞一样,写到这里就相当于丢掉这些信息,既不显示到屏幕上,也不保存到任何一个文件里面

a.txt如果在程序运行时修改a.txt的文件名为b.txt,则程序会继续把数据写入到b.txt中,而不是建立一个新的a.txt;如果删除a.txt,程序也不会再生成新的a.txt。这点跟重复with open+fp.write的效果还是有点区别的。我个人的理解是,>>>相当于是连了一条管道到a.txt,如果a.txt改名了,这个文件对外的名字变了,但这条管道依旧连在那里没有变化,所以写入就会写到新的b.txt中;而如果把原有的文件删除,就相当于是把那条管道的出口处给删了,所以就看不到任何新数据了。

+ 磁盘相关命令

df命令:

disk free的缩写,用于列出文件系统的整体磁盘使用量。命令的格式为:

df [-a -h -i -k -H -T -m] [目录或文件名]

不加参数使用时,默认会将系统内所有的 (不含特殊内存内的文件系统与 swap) 都以 1 Kbytes 的容量来列出来。常用的选项如下示:

  • -a :列出所有的文件系统,包括系统特有的 /proc 等文件系统;
  • -k :以 KBytes 的容量显示各文件系统;
  • -m :以 MBytes 的容量显示各文件系统;
  • -h :以人们较易阅读的 GBytes, MBytes, KBytes 等格式自行显示;
  • -H :以 M=1000K 取代 M=1024K 的进位方式;
  • -T :显示文件系统类型, 连同该 partition 的 filesystem 名称 (例如 ext3) 也列出;
  • -i :不用硬盘容量,而以 inode 的数量来显示

du命令:

disk used的缩写,用于查看文件和目录磁盘使用空间的。命令的格式为:

du [-a -h -s -k -m] 文件或目录名称

不加参数使用时,默认会分析当前所在目录里的子目录所占用的硬盘空间。常用的选项如下示:

  • -a :列出所有的文件与目录容量
  • -h :以人们较易读的容量格式 (G/M) 显示
  • -s :列出总量,而不是单个目录占用容量
  • -S :不包括子目录下的总计
  • -k :以KB列出容量显示
  • -m :以MB列出容量显示

fdisk命令:

磁盘分区表操作工具。命令的格式为:

fdisk [-l] 装置名称

常用的选项如下示:

  • -l :输出后面接的装置所有的分区内容。若装置名称为空,则会把系统内能够搜寻到的装置的分区都列出来

file命令:

file命令用于辨识文件类型。命令的格式为:

file [-b -c -L -v -z][-f <名称文件>][-m <魔法数字文件>...][文件或目录...]

常用的选项如下示:

  • -b  列出辨识结果时,不显示文件名称。
  • -c  详细显示指令执行过程,便于排错或分析程序执行的情形。
  • -f<名称文件>  指定名称文件,其内容有一个或多个文件名称时,让file依序辨识这些文件,格式为每列一个文件名称。
  • -L  直接显示符号连接所指向的文件的类别。
  • -m<魔法数字文件>  指定魔法数字文件。
  • -v  显示版本信息。
  • -z  尝试去解读压缩文件的内容。
  • [文件或目录…] 要确定类型的文件列表,多个文件之间使用空格分开,可以使用shell通配符匹配多个文件。

其它命令:

其他常用命令不做一一列举,如:mkdirln

+ 进程相关命令

ps命令:

显示所有进程;-u用户以及其他详细信息。-x:显示没有控制终端的进程。linux中分别有五种进程:R:进程正在运行中;S:进程处于休眠状态,当某个条件触发时则改变。

D:进程不影响系统的异步信号,及时用kill命令也不能停止。Z:进程已经终止,但进程描述符依然存在,直到父进程调用wait4()函数,后进程释放。T 停止:进程受到信号后马上停止。注:(在linux中命令的参数格式有长短之分,长格式和短格式之间不能合并,长格式与长格式之间也不能合并,而短格式和短格式之间可以合并,合并后保留一个- 即可,另外ps命令允许,参数不加- 号,)

ps -ef :查看进程使用标准语法

ps -ef | grep 进程 :筛选出命令进程 可以得到进程号,经常使用,用来查看相关的进程状态。

ps -aux 列出进程的ID号

这里可以结合进程号,使用kill命令,将进程杀死,

ps命令展示的信息如下:
在这里插入图片描述F 代表进行标志,4是代表使用者为root;

S 代表这个程序的状态(stat);

uid 代表执行者的身份.

pid代表进行id号.

ppid代表父进程的id号

C 表示进程占用cpu资源的百分比

PRI 指进程的执行优先级,值越小越被早执行.

NI 这个是进程的nice值,表示进程可被执行的优先级的修正数值.

ADDR 是内核函数,指出该进程在内存的那个部分.如果是执行的程序,一般就是-

SZ 表示使用的内存大小

WCHAN 表示目前这个程序是否在运行中,-表示正在运行.

TTY登录这终端的位置.

TIME表示进程使用总cpu时间,

CMD: 正在执行的命令行命令

top命令:

top命令用于动态的监控进程活动与负载的相关信息,用于实时监控进程。
在这里插入图片描述第一行:分别是:系统时间,运行时间,登录终端数,系统负载(其中的三个数值分别是1分钟,5分钟,15分钟,的平均值,数值越小意味着负载越低,).

第二行:进程总数,运行中的进程数,睡眠中的进程数,停止的进程数,僵死的进程数.

第三行: 用户占用资源的百分比,系统内核占用资源百分比,改变优先级的进程资源百分比,空闲资源百分比,

第四行: 物理内存总量,内存使用量,内存空闲量,作为内核缓存的内存量.

第五行: 虚拟内存总量,虚拟内存使用量,虚拟内存空闲量,已被提前加载的内存量.

下面这些显示的当前进程的信息,和ps命令显示的内容差不多.该命令主要是可以动态的观测系统的使用情况.

pidof命令:

该命令用于查询某个已知的指定进程的pid的值,例如:
在这里插入图片描述

pstree命令:

该命令需要通过yum或其他方式安装后,才能使用.主要用于查看进程数之间的关系,可以清楚的看到子父进程之间的关系.

用于查看进程树之间的关系,即是各个进程之间父子关系,

-A: 各进程树之间的连接以ASCII码字符来连接

-U:各进程树之间的连接以utf8字符来连接,某些终端可能会有错误

-p:同时列出每个进程的PID

-u: 同时列出每个进程的所属账号名称

该命令需要安装, yum install psmisc-22.20-11.el7.x86_64 -y #安装pstree命令
在这里插入图片描述

pgrep命令:

获得正在被调度的进程的相关信息,pgrep通过匹配程序命令,可以找到进程名.

-l 同时显示进程名和pid

-o 当匹配多个进程时,显示进程号最小的,

-n 当匹配多个进程时,显示进程号最大的那个. 注:进程号越大,并不一定意味着进程的启动时间越晚

pgrep命令用来查看进程信息,通常会和kill命令来配合使用

pgrep 进程名称 (可以查看到进程号,再用kill杀死进程)
在这里插入图片描述
htop:

相比于top监控,有着很多自身优势. (需要安装htop工具)

两者相比起来,top比较繁琐

默认支持图形界面的鼠标操作

可以横向或纵向滚动浏览进程列表,以便看到所有的进程和完整的命令行

杀进程时不需要输入进程号等

关于端口:

jps 查询进程端口号
lsof -i:8888 查看是哪个进程在占用8888端口
sudo netstat -ap | grep "12345" 查看进程12345占用了哪个端口
netstat -ntpl查看开放的tcp端口
nmap是常用的端口扫描工具,nmap localhost -p 1-65535扫描自己的所有端口

+ 定时命令 crond

  1. crond是什么

crond是linux系统中用来定期执行命令或指定程序的一种服务或软件。

特殊要求:(秒级别)crond服务就无法搞定了,一般工作中写脚本用守护进程执行

[root@shellbiancheng jiaobenlianxi]# cat while1.sh #!/bin/shwhile true do uptime sleep 2 done
  1. linux系统crond的定时任务

(1)linux系统自身定期执行的任务操作,如轮询系统日志、备份系统数据、清理系统缓存等,这些任务无需我们人为干预。例如:

[root@linzhongniao ~]# ls -l /var/log/messages* -rw-------. 1 root root 206776 Aug 2 17:43 /var/log/messages -rw-------. 1 root root 448307 Jul 8 08:54 /var/log/messages-20180708 -rw-------. 1 root root 742560 Jul 16 04:05 /var/log/messages-20180716 -rw-------. 1 root root 1293433 Jul 22 15:15 /var/log/messages-20180722 -rw-------. 1 root root 622193 Jul 30 20:14 /var/log/messages-20180730[root@linzhongniao ~]# ll /etc/|grep cron -rw-------. 1 root root541 Aug 24 2016 anacrontabdrwxr-xr-x. 2 root root 4096 Jul 16 14:19 cron.ddrwxr-xr-x. 2 root root 4096 Jul 16 14:18 cron.daily -rw-------. 1 root root 0 Aug 24 2016 cron.denydrwxr-xr-x. 2 root root 4096 Jul 16 14:19 cron.hourlydrwxr-xr-x. 2 root root 4096 Jun 14 05:01 cron.monthly -rw-r--r--. 1 root root457 Sep 27 2011 crontabdrwxr-xr-x. 2 root root 4096 Sep 27 2011 cron.weekly

2)用户执行的任务操作:某个用户或系统管理员定期要做的任务工作,例如每隔5分钟和互联网上时间服务器进行同步,每天晚上0点备份站点数据及数据库数据,一般这些工作需要由每个用户自行设置才行。

用户执行的任务工作,也就是运维管理员执行的任务工作,因此这个用户执行的任务是我们的重点。

  1. linux系统下定时任务软件种类

linux系统下的定时任务还真不少,例如:at,crontab,anacron

at:适合仅执行一次就结束的调度任务命令,例如:某天晚上需要处理一个任务,仅仅是这一天的晚上,属于突发性任务,要执行at命令,还需要启动atd的服务才行

[root@linzhongniao ~]# chkconfig --list|grep atdatd 0:off 1:off 2:off 3:o

- Shell

+ 判断文件是否存在

shell

#!/bin/sh

myPath="/var/log/httpd/"
myFile="/var /log/httpd/access.log"

# 这里的-x 参数判断$myPath是否存在并且是否具有可执行权限
if [ ! -x "$myPath"]; then
mkdir "$myPath"
fi
# 这里的-d 参数判断$myPath是否存在
if [ ! -d "$myPath"]; then
mkdir "$myPath"
fi
# 这里的-f参数判断$myFile是否存在
if [ ! -f "$myFile" ]; then
touch "$myFile"
fi
# 其他参数还有-n,-n是判断一个变量是否是否有值
if [ ! -n "$myVar" ]; then
echo "$myVar is empty"
exit 0
fi
# 两个变量判断是否相等
if [ "$var1" = "$var2" ]; then
echo '$var1 eq $var2'
else
echo '$var1 not eq $var2'
fi

-f 和-e的区别
Conditional Logic on Files

-a file exists.
-b file exists and is a block special file.
-c file exists and is a character special file.
-d file exists and is a directory.
-e file exists (just the same as -a).
-f file exists and is a regular file.
-g file exists and has its setgid(2) bit set.
-G file exists and has the same group ID as this process.
-k file exists and has its sticky bit set.
-L file exists and is a symbolic link.
-n string length is not zero.
-o Named option is set on.
-O file exists and is owned by the user ID of this process.
-p file exists and is a first in, first out (FIFO) special file or
named pipe.
-r file exists and is readable by the current process.
-s file exists and has a size greater than zero.
-S file exists and is a socket.
-t file descriptor number fildes is open and associated with a
terminal device.
-u file exists and has its setuid(2) bit set.
-w file exists and is writable by the current process.
-x file exists and is executable by the current process.
-z string length is zero.

是用 -s 还是用 -f 这个区别是很大的!

- 在线网页推荐

命令搜索:
https://www.lzltool.com/LinuxCommand
github开源的linux命令书籍:
https://billie66.github.io/TLCL/book/


完~感谢观看


- 学习参考

  • 磁盘文件系统
    • 看完就明白/dev/sda、/dev/hda是什么了
  • 文件权限
    • CSDN 权限的基本介绍
    • CSDN 修改文件权限
  • 命令分解 - 实用命令
    • Linux命令及使用方法new
    • CSDN grep命令
    • CSDN awk命令
  • 命令分解 - 磁盘相关命令
    • 看完就明白/dev/sda、/dev/hda是什么了
  • 命令分解 - 进程相关命令
    • CSDN 查看系统进程
  • 命令分解 - 定时命令 crond
    • CSDN 定时任务
  • Shell - 判断文件是否存在
    • shell判断文件是否存在

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/515828.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【数据类型-列表】------- PYTHON基础9

内容目录 一、数据类型-列表1. 列表1.1. 列表的截取 result List[start:end:step]1.2. 列表元素的修改 List[index] element1.3. 列表元素的删除 del List[index] 或 del List[start:end:step]1.4. 列表元素的拼接 “” 或者增量赋值运算符 “” 2. 列表常用内置函数 对象.内…

jdbc工具包

JDBC工具类 介绍 JDBC全称是Java数据库连接&#xff08;Java Database connect&#xff09;&#xff0c;它是一套用于执行SQL语句的JavaAPI。应用程序可通过这台API连接到关系数据库&#xff0c;并使用SQL语句来完成对数据库中数据的查询、更新和删除等操作。 JDBC实现细节 从…

深入浅出C语言——排序

文章目录 排序的概念常见的排序算法冒泡排序选择排序插入排序希尔排序堆排序快速排序hoare版本挖坑法前后指针版本快速排序的非递归形式 归并排序递归版本非递归版本 计数排序排序算法复杂度及稳定性分析 排序的概念 排序就是使用使一串记录&#xff0c;按照其中的某个或某些关…

vue3 nextTick()应用

在Vue3中&#xff0c;可以使用nextTick函数来延迟执行某些操作&#xff0c;这些操作会在下一次DOM更新周期之后执行。这个函数通常用于在数据更新后&#xff0c;等待DOM更新之后执行一些操作&#xff0c;比如获取DOM元素的尺寸、位置等。 nextTick() 例如&#xff0c;以下一个…

C语言—与坤(机)对弈

目录 设计思路 游戏运行效果 函数的声明 头文件game.h 游戏主体(源文件) 1.game.c 2.test.c 各文件的阐述 各部分的设计心得 1.打印菜单 2.初始化棋盘 3.打印棋盘 棋盘最终效果 1.打印数据 2.打印分割线 如何扩展为10 x 10 棋盘&#xff1f; 4.玩家下棋、电脑下…

mkv文件怎么转换成mp4?来看看这四种转换方式吧!

mkv文件怎么转换成mp4&#xff1f;在很多小伙伴看到&#xff0c;图片就是图片&#xff0c;音频就是音频&#xff0c;视频就是视频&#xff0c;它们展现给人们的效果都差不多。但实际上&#xff0c;不管是图片、视频还是音频文件&#xff0c;其中一个重要的区别在于它们的文件格…

照片尺寸怎么调整大小?三个方法,高效、快捷、安全!

照片尺寸怎么调整大小&#xff1f;照片是我们在日常生活和办公中经常会使用的文件类型之一。在制作各种文件、讲义、PPT、视频等内容时&#xff0c;图片都会成为重要的一部分。不同的图片格式和大小各有特点&#xff0c;有些图片虽然比较大但画质清晰&#xff0c;有些则方便传输…

选择排序,直接插入排序

目录 一、选择排序 1.基本思想 2.直接选择排序的流程 3.实验 二、直接插入排序法 1.基本思想 2.直接插入排序法的流程 3.实验 三、反向排序 1.实验 一、选择排序 与冒泡排序相比&#xff0c;直接选择排序的交换次数更少&#xff0c;所以速度会更快。 1.基本思想…

centos linux 配置私有网段并联网

文章目录 1. 创建虚拟机2. 虚拟机 A 配置网络3. 虚拟机 B 分配静态地址4. 测试 1. 创建虚拟机 vcenter 创建两台虚拟机A 、B&#xff0c;如何创建虚拟机请参考这里 虚拟机 A 具备两个网络接口&#xff0c;外网接口为 ens192 ip&#xff1a;192.168.22.6/20&#xff0c;网关为…

Golang tracing:与 OpenTelemetry、jaeger实现 跨服务 全链路追踪

使用 OpenTelemetry 链路追踪说明 工作中常常会遇到需要查看服务调用关系,比如用户请求了一个接口接口会调用其他grpc,http接口,或者内部的方法这样的调用链路,如果出现了问题,我们需要快速的定位问题,这时候就需要一个工具来帮助我们查看调用链路OpenTelemetry就是这样一个工…

Sui改进提案(SIPs)及其审核流程

SIPs提供了一个清晰透明的流程&#xff0c;使社区可以对Sui网络提出改进建议。 Sui基金会致力于打造一个开放协作的生态&#xff0c;因此推出了Sui改进提案&#xff08;SIPs&#xff0c;Sui Improvement Proposals&#xff09;&#xff0c;这是一个记录社区为去中心化未来的发…

如何利用API做好电商,接口如何凋用关键字

一.随着互联网的快速发展&#xff0c;电子商务成为了众多企业的首选模式&#xff0c;而开放API则成为了电商业务中不可或缺的部分。API&#xff08;Application Programming Interface&#xff09;&#xff0c;即应用程序接口&#xff0c;是软件系统不同组件之间交互的约定。电…

登录校验2.0

登录校验2.0 Filter Filter详解 过滤器Filter在使用中的一些细节&#xff0c;主要介绍一下3个方面的细节&#xff1a; 过滤器的执行流程过滤器的拦截路径配置过滤器链 执行流程 过滤器当中我们拦截到了请求之后&#xff0c;如果希望继续访问后面的web资源&#xff0c;就要…

内容编排与Kubernetes

第一节 内容编排与Kubernetes 为什么要用k8s 集群环境容器部署的困境&#xff0c;假设我们有数十台服务器。分别部署Nginx&#xff0c;redis&#xff0c;mysql&#xff0c;业务服务。如何合理的分配这些资源。这里就需要用到容器编排 容器编排 在实际集群环境下&#xff0…

线性结构-队列

队列是一种先进先出First In Fisrt Out,FIFO的线性表。 与一般的数组和链表不同&#xff0c;队列要求所有的数据只能从一端进入&#xff0c;从另一端离开。 输入进入的一端叫队尾rear&#xff0c;数据离开的一端叫队头front。 数据只能从队尾进入队列&#xff0c;从队头离开队…

VSCODE配置ROS编译环境

目录 一、安装插件 二、环境配置 2.1初始化工作空间 2.2配置VSCode 2.2.1创建功能包 2.2.2配置 c_cpp_properties.json 2.2.3配置 task.json 2.2.4配置 CMakeLists.txt 三、运行程序 3.1编译程序 3.2启动ros master 3.3执行可执行文件 用VSCode编辑ROS程序时&#xf…

linux 内核内存管理

物理内存 相关数据结构 page&#xff08;页&#xff09; Linux 内核内存管理的实现以 page 数据结构为核心&#xff0c;其他的内存管理设施都基于 page 数据结构&#xff0c;如 VMA 管理、缺页中断、RMAP、页面分配与回收等。page 数据结构定义在 include/linux/mm_types.h …

使用 Lambda 函数将 CloudWatch Log 中的日志归档到 S3 桶中

作者&#xff1a;SRE运维博客 博客地址&#xff1a;https://www.cnsre.cn/ 文章地址&#xff1a;https://www.cnsre.cn/posts/221205544069/ 相关话题&#xff1a;https://www.cnsre.cn/tags/aws/ 躺了好久&#xff0c;诈尸了。因为换了工作&#xff0c;所以比较忙一直没有时间…

解决APP抓包问题「网络安全」

1.前言 在日常渗透过程中我们经常会遇到瓶颈无处下手&#xff0c;这个时候如果攻击者从APP进行突破&#xff0c;往往会有很多惊喜。但是目前市场上的APP都会为防止别人恶意盗取和恶意篡改进行一些保护措施&#xff0c;比如模拟器检测、root检测、APK加固、代码混淆、代码反调试…

挖出api接口的重要性

作为一名软件开发者&#xff0c;API是我们工作中不可或缺的一部分。无论是将不同系统连接起来&#xff0c;还是构建多组件应用程序&#xff0c;API都是我们的核心工具之一。在本文中&#xff0c;我们将深入讨论API的技术细节和实际应用。 一.首先&#xff0c;我们来看看什么是…