5.24 linux

1,课程回顾

关机相关:

shutdown -h now

poweroff

init 0

shutdown -h 10 10分钟后关机

重启相关:

reboot

shutdown -r now

init 6

shutdown -r 12:12

服务相关的命令:

service 服务名 status

systemctl status 服务名

service 服务名 stop

systemctl stop 服务名

service 服务名 start

systemctl start 服务名

service 服务名 restart

systemctl restart 服务名

systemctl disable 服务名

systemctl enable 服务名

2,本章重点

文件管理的所有命令

系统检测和维护常用命令(top ,ps,kill 等等命令,定时任务。。。)

3,具体内容

3.1 磁盘和文件管理命令

3.1.1 系统目录介绍:

/: 根目录,一般根目录下只存放目录,不要存放文件,/etc、/bin、/dev、/lib、/sbin应该和根目录放置在一个分区中

/bin(binary): /usr/bin: 可执行二进制文件的目录,如常用的命令ls、tar、mv、cat等。

/boot: 放置linux系统启动时用到的一些文件。/boot/vmlinuz为linux的内核文件,以及/boot/grub。建议单独分区,分区大小100M即可

/dev: 存放linux系统下的设备文件,访问该目录下某个文件,相当于访问某个设备,常用的是挂载光驱mount /dev/cdrom /mnt。

/etc: 系统配置文件存放的目录,不建议在此目录下存放可执行文件,重要的配置文件有/etc/inittab、/etc/fstab、/etc/init.d、/etc/X11、/etc/sysconfig、/etc/xinetd.d修改配置文件之前记得备份。注:/etc/X11存放与x windows有关的设置。

/home: 系统默认的(普通)用户家目录,新增用户账号时,用户的家目录都存放在此目录下,~表示当前用户的家目录,~test表示用户test的家目录。建议单独分区,并设置较大的磁盘空间,方便用户存放数据

/lib: /usr/lib:/usr/local/lib: 系统使用的函数库的目录,程序在执行过程中,需要调用一些额外的参数时需要函数库的协助,比较重要的目录为/lib/modules。

/mnt: /media: 设备默认挂载点,通常光盘挂载于/mnt/cdrom下,也不一定,可以选择任意位置进行挂载.

/opt: 给主机额外安装软件所摆放的目录。如:FC4使用的Fedora 社群开发软件,如果想要自行安装新的KDE 桌面软件,可以将该软件安装在该目录下。以前的 Linux 系统中,习惯放置在 /usr/local 目录下

/proc: 此目录的数据都在内存中,如系统核心,外部设备,网络状态,由于数据都存放于内存中,所以不占用磁盘空间,比较重要的目录 process 进程有/proc/cpuinfo、/proc/interrupts、/proc/dma、/proc/ioports、/proc/net/*等

/root: 系统管理员root的家(根)目录,系统第一个启动的分区为/,所以最好将/root和/放置在一个分区下。

/sbin: /usr/sbin:/usr/local/sbin: 放置系统管理员root使用的可执行命令,如fdisk、shutdown、mount等。与/bin不同的是,这几个目录是给系统管理员root使用的命令,一般用户只能"查看"而不能设置和使用。

/tmp: 一般用户或正在执行的程序临时存放文件的目录,任何人都可以访问,重要数据不可放置在此目录下

/srv: 服务启动之后需要访问的数据目录,如www服务需要访问的网页数据存放在/srv/www内

/usr: 应用程序存放目录,/usr/bin 存放应用程序, /usr/share 存放共享数据,/usr/lib 存放不能直接运行的,却是许多程序运行所必需的一些函数库文件。/usr/local:存放软件升级包。/usr/share/doc: 系统说明文件存放目录。/usr/share/man: 程序说明文件存放目录,使用 man ls时会查询/usr/share/man/man1/ls.1.gz的内容建议单独分区,设置较大的磁盘空间

/var: 放置系统执行过程中经常变化的文件,如随时更改的日志文件variable /var/log,/var/log/message: 所有的登录文件存放目录,/var/spool/mail: 邮件存放的目录,/var/run: 程序或服务启动

3.1.2 命令格式:

命令 【-选项】 【 参数】

如:ls -la /usr

3.1.3 命令分类和帮助:

内部命令:属于Shell解析器的一部分(cd pwd),执行速度会快

外部命令:独立于Shell解析器之外的文件程序(ls mkdir),执行速度会慢(每次运行外部命令,需要shell解析器先加载解析,再执行)

内部命令:help + 命令(help cd)

外部命令:man(manual 帮助手册) + 命令(man ls)

查看一个命令的帮助文档,如果文档比较长,enter键一行一行看,space(空格)键 一页一页看 字母q(quit) 退出帮助文档

3.1.3 常用命令:

  • 查看目录内容

ls list directory contents 列出目录内容

选项:

-a all do not ignore entries starting with .

在linux系统中以.开头的文件或者目录是隐藏文件 显示所有内容,包括隐藏文件

-l use a long listing format 使用长的列表格式

显示目录或者详情

-t sort by modification time, newest first 按照更新时间排序 越新的越在前面,倒叙排序文件内容

具体使用:

touch a 创建a文件

touch b 创建b文件

mkdir  aaa 创建aaa目录

mkdir  bbb

ls 查看不到.开头目录文件

ls -a 显示所有的

ls -l 显示内容详细信息

ll 是ls -l 的简化写法

ls -a -l 多个选项一起使用 显示所有内容的详情

ls -al 多个选项可以合并使用

ls -la

ls

ls -t 发现显示文件顺序不同

ls -a -l -t 发现确实按照更新时间倒叙排序

ls -alt

ls -lat

ls -alt / 显示根目录所有内容详情,倒叙排序

ls -lta /etc

ls -lta /etc/

 ls -la  /etc/sysconfig/network-scripts/

ls -l ../ 相对目录 ../上级目录

cd  /etc/sysconfig/network-scripts/ 进入该目录

ls ../../../root/ 相对路径显示 选项可以随意加

  • 切换目录

cd Change the shell working directory 改变工作目录

具体使用:

cd  /etc/sysconfig/network-scripts/ 切换到指定目录

cd ../ 切换上级目录

cd ../../ 切换到上两级目录

cd 什么都参数都不加 切换到当前用户的根目录

cd  /etc/sysconfig/network-scripts/

cd ~ 和上面什么参数都不加一样 切换到当前用户的根目录

  • 创建目录

mkdir make directories 创建单个/多个目录

选项:

-p parents no error if existing, make parent directories as needed

一次创建多级目录,使用-p会按照需要创建父目录,不会让创建错误

具体用法:

  mkdir spring 创建单个目录

mkdir  mybatis  springboot 创建多个目录

mkdir  spring/ioc   spring/aop   spring/mvc 一次在某一个目录下创建多个目录

mkdir aa/bb/cc/dd 错误的 因为创建dd时,cc不存在 。。。。

mkdir -p  aa/bb/cc/dd

  • 创建文件

touch change file timestamps 改变文件时间戳

A FILE argument that does not exist is created empty

当touch命令后跟的参数文件不存在时,会创建一个内容为空的文件

具体用法:

ll 查看a.txt的创建时间

 touch  a.txt 改变a.txt的文件更新时间

ll 发现a.txt的更新时间变成当前时间

touch  b.txt b.txt不存在就会创建一个空的b.txt

ll 发现b.txt被创建,内容为0

  • 查看文件内容

cat:

concatenate files and print on the standard output 串联文件并打印到标准输出

显示一个文件的全部内容

echo 内容 > 目标文件 以覆盖方式将内容写入文件

echo 内容>> 目标文件 以追加方式将内容写入文件

date >> 目标文件 将当前系统日期添加到文件中

具体实例:

touch a.txt

touch b.txt

touch c.txt

echo 'hello' 正常显示标准输出 echo= display a line of text

echo 'hello' > a.txt > 写入 把hello内容写入到a.txt

echo 'aaa' > b.txt 

 echo 'bbb' > b.txt 

ll

cat a.txt b.txt c.txt 串联3个文件,并把内容打印

cat a.txt

cat b.txt

touch tomcat.log 创建一个tomcat.log文件

echo 'abc' > tomcat.log 写入abc

cat tomcat.log

echo '123' > tomcat.log 写入123

cat tomcat.log 发现写入会覆盖原来内容

date 显示当前时间

date >> tomcat.log >>追加 不会覆盖原来内容,在原来内容的下一行进行追加

cat tomcat.log

date >> tomcat.log 多次执行 发现都是追加

cat tomcat.log 当我们执行多次后,文件不再一页 cat的弊端就显示出来,只能看到文件的最后一页内容

head:

output the first part of files 显示文件的开始部分

选项:

-n lines print the first K lines instead of the first 10;

如果指定了n的值为k 打印 前K 代替前10行

具体用法:

head tomcat.log 默认显示文件的前10行

head -5 tomcat.log  显示前5行

tail:

output the last part of files 输出文件的末尾部分(10行内容)

选项:

-n 显示文件尾部指定行

-f follow output appended data as the file grows 文件增长时显示追加数据

-F 和-f 只不过带retry(重试)功能

具体用法:

 tail tomcat.log  默认显示后10行

 tail -2  tomcat.log

tail -20  tomcat.log

tail -f tomcat.log 查看tomcat.log追加部分 会阻塞不动

另外启动一个会话窗口,在里面执行

 echo 'appened111' >> tomcat.log 

echo 'appened222' >> tomcat.log 

date>>tomcat.log  多次执行 观察原窗口的变化

tail -F tomcat.log 带重试功能,在web项目中都会记录日志,通常记录日志时,如果日志是按照日志每天生成的, 当前的文件是tomcat.out 今天过完把tomcat.log变为tomcat.2022-04-14.log文件,最新的仍然是tomcat.out 继续追踪最新文件

ctrl+c 退出

more :

file perusal filter for crt viewing 分页显示数据

具体用法:

more BaseDAO.java

enter 键 一行一行显示

space 空格键 向下翻页

ctrl+f 向下翻页

ctrl+b 向上翻页

q 退出

less:

opposite of more 分页显示数据

具体用法:

less settings.xml

enter 键 一行一行显示

space 空格键 向下翻页

ctrl+f 向下翻页

ctrl+b 向上翻页

q 退出

可以使用 “/关键字” 进行搜索 高亮关键字

  • 复制文件

cp opy files and directories 复制和目录 相当于windows下的ctrl+c + ctrl+v

选项:

-r recursive 递归 copy directories recursively 递归复制目录

具体用法:

ls

cp a.txt spring 复制a.txt到spring目录

ls

ls spring 发现存在了

ls /tmp

cp /root/a.txt /tmp 复制a.txt到/tmp目录下

ls /tmp

cp ../etc/sysconfig/network-scripts/ifcfg-ens33   /tmp/ 相对路径复制

ls /tmp

cat /tmp/ifcfg-ens33

mkdir frames 创建一个框架目录

 cp spring frames/ cp 不可以直接复制目录

mkdir spring/aop/aspect

mkdir spring/aop/pointcut

cp -r spring   frames/ 复制spring目录到frames目录下

ls frames/spring/

ls frames/spring/aop/

  • 查看当前工作目录

pwd print name of current/working directory 打印当前工作目录的名称

具体用法:

pwd 回车 ,默认显示当前工作目录的位置

cd /etc/sysconfig/network-scripts/

pwd

  • 移动文件或者重命名

mv move (rename) files 移动/重命名 文件 相当于windows中的ctrl+x ctrl+v

具体用法:

ls

ls spring

mv b.txt spring //移动b.txt 文件到 目录中

ls /frames 发现springboot目录

ls

mv a.txt aaa.txt 把a.txt重命名为aaa.txt aaa.txt目录不存在

ls

mv  frames/  frameset 把目录frames重命名为frameset

ls

  • 删除空目录

rmdir remove empty directories 删除空目录

具体用法:

ls

rmdir mybatis/ 直接删除空目录mybatis

ls

rmdir frameset/ 不能删除非空目录

ls

mkdir bb cc dd

ls

rmdir bb cc dd 删除多个空目录

ls

mkdir -p bb/cc/dd

rmdir bb 无法删除

  • 删除文件

rm remove files or directorie 删除文件或目录

选项:

-r recursive 递归的 remove directories and their contents recursively

递归删除目录及目录下所有内容

-f force 强制的 ignore nonexistent files and arguments, never prompt

不带提示信息,直接删除

具体用法:

ls

rm 中文.txt //删除 中文.txt 有提示信息 需要确认是否删除 y/n

ls

rm -f  aaa.txt //直接删除aaa.txt不带提示

ls

mkdir -p bb/cc/dd

rm -f bb 无法删除目录

rm bb 无法删除目录

ls

rm -rf  bb 不带提示递归删除目录bb 及其下的所有内容

ls

无论是文件或者目录,都可以使用 rm -rf 强制删除

touch frameset/a   frameset/b   frameset/c.log 在frameset下创建3个文件

ls frameset 有目录还有文件

rm -rf frameset/* * 为通配符,统配所有内容

ls frameset

  • 文件统计

wc (word count) print newline, word, and byte counts for each file 打印每个文件行数,单词数和字节数

选项:

-l  print the newline counts 打印行数

-c print the byte counts 打印字节数

-m print the character counts 打印字符数(utf-8时一个中文1个字符 3个字节)

-w print the word counts 打印单词数

具体用法:

touch a.log

echo 'hello'>>a.log

wc a.log 结果为1 1 6 a.log 行数 单词数(以换行或者空格分割) 字节数(一个空格和换行都按照1个字节计算 1个中文汉字占3个字节utf-8) 文件名字

echo '中国'>>a.log

cat a.log 

wc a.log 2 2 13 2行 2单词 13字节

 echo 'hello AAA'>>a.log

cat a.log

wc a.log 3 4 23 3行 4单词 23 字节

 wc -l a.log  打印行数

wc -c a.log 打印字节数

wc -w a.log 打印单词数

wc -m a.log 打印字符数 (一个中文占3个字符)

  • 查找文件或者目录

find search for files in a directory hierarchy 按照目录层次查询文件

具体用法:

find   -name   '*t*' 列出当前目录下所有名称含有t的文件或者目录

find  /etc   -name   '*audit*' 查找/etc下 所有名称含有audit的文件或者目录

find  /etc   -name   '*audit*'   |  wc -l 查找/etc下 所有名称含有audit的文件或者目录 并统计行数

find  /etc   -name   '*t*'   |   wc -l | 管道符 连接多个命令的 通常后一个命令把前一个命令的执行结果作为参数

  • 筛选文件内容

grep(global regular expression print) print lines matching a pattern

全局按照正则表达式查找匹配内容,并把查找结果打印到标准数据

grep (缩写来自Globally search a Regular Expression and Print)是一种强大的文本搜索工具,它能使用特定模式匹配(包括正则表达式)搜索文本,并默认输出匹配行。(百度百科)

具体用法:

cat tomcat.log 查看所有内容

grep  22:  tomcat.log 查找含有22:的所有行,并打印

  grep This  settings.xml

grep a  settings.xml

grep a  settings.xml | wc -l 从 settings.xml文件中查找含有a的行,并统计行数

find  /etc   -name   '*t*'  | grep  pos 从find的查找结果查找含有pos的行并打印

find  /etc   -name   '*t*'  | grep  pos | wc -l 从find的查找结果查找含有pos的行并打印,并统计行数

  • 创建快捷方式(创建软硬连接)

ln make links between files 在文件之间创建连接

选项:

-s make symbolic links instead of hard links 为文件或者目录创建象征性的连接 软连接 (相当于windows下的快捷方式)

-d  allow  the superuser to attempt to hard link directories

硬接连 给源文件创建一个副本文件,当原文件删除,对副本文件没有任何应该

具体用法:

mkdir -p  /tmp/aaa/bbb/ccc

ln -s /tmp/aaa/   aaa.lnk 为/tmp下aaa目录创建软连接到当前用户主目录下

ls -l 发现aaa.lnk连接到/tmp/aaa

ls aaa.lnk/ 测试是否可以使用 直接看到bbb

rm -rf /tmp/aaa 删除源目录

ll 发现aaa.lnk变红色 不可用了

mkdir -p  /tmp/aaa/bbb/ccc 再次创建目录

ll 发现又可以使用

ls aaa.lnk 查看内容

cat a.log

ln -d a.log  a.log.lnk 为a.log创建硬连接a.log.lnk

cat a.log.lnk 直接查看内容

rm -rf a.log 删除源文件

 cat a.log.lnk 删除源文件对连接文件没有任何影响

  • 压缩解压文件

gzip:

compress or expand files

选项:

-d Decompress 解压缩

具体用法:

gzip tomcat.log 压缩tomcat.log文件 产生一个tomcat.log.gz   源文件消失

gzip -d tomcat.log.gz 解压 压缩包消失,源文件出现

bzip2:

最小化安装,只安装了gzip 没有安装bzip2

在线安装bzip2 压缩解压方法

ping www.baidu.com 看网络是否通畅

 yum -y install bzip2 自动分析依赖,在线安装软件bzip2

a block-sorting file compressor,a block-sorting file compressor

压缩解压文件

选项:

-d decompress 解压缩

具体操作:

ls

bzip2  tomcat.log 压缩tomcat.log 产生tomcat.log.bz2 源文件消失

ls

 bzip2  -d  tomcat.log.bz2 解压 压缩包消失 源文件出现

ls

gzip frameset/

bzip2 frameset/

这两个命令都无法直接对目录进行压缩

  • 压缩解压目录/文件 查看压缩包

tar:

GNU  `tar'  saves many files together into a single tape or disk archive,

       and can restore individual files from the archive

把许多文件保存到一起到一个单独磁带或者磁盘档案上,可以从档案中恢复文件

和windows下的压缩解压是一个意思

选项:

-c create 创建 create a new archive 创建压缩

-t list 列表 list the contents of an archive 查看压缩包

-x extract 提取 extract files from an archive 从压缩包提取文件 解压缩

上面3个选项中 都不可以共同使用

-z gzip filter the archive through gzip 通过gzip方式进行过滤(压缩,查看压缩包,解压)

-j bzip2 filter the archive through bzip2 通过bzip2方式进行过滤(压缩,查看压缩包,解压)

上面2个选项不能共同使用(不能压缩,查看或者解压过程中换方式)

-v verbose verbosely list files processed 显示文件详情 可选的,不要也可以

-f file use archive file or device ARCHIVE 文档名称

-C  change to directory DIR 改变目录 指定解压文件位置

具体用法:

既可以对文件进行操作 ,也可以对目录进行操作(本质tar 打包,打包可以打包目录,在打包过程使用gzip,bzip2进行压缩或者解压)

ls

mkdir frameset

mkdir frameset/spring  frameset/springboot  frameset/mybatis frameset/hibernate

mkdir frameset/spring/ioc  frameset/spring/aop frameset/spring/mvc

touch frameset/spring/ioc/a.log

touch frameset/spring/ioc/b.log

touch frameset/spring/aop/aa.log

touch frameset/spring/aop/bb.log

tar -czvf  frameset.tar.gz   frameset/ 压缩文件夹frameset,压缩之后的名称为frameset.tar.gz 因为带了v 所以会显示压缩过程

ls 发现和windows下一样,压缩后,源目录依然存在,产生frameset.tar.gz文件

rm -rf frameset.tar.gz 删除,再压缩,演示不带v

tar -czf  frameset.tar.gz  frameset 依然压缩,不再显示详细信息

ls

tar -tzvf frameset.tar.gz  查看压缩包(带v显示详情)

tar -tjvf frameset.tar.gz 错误 压缩文件使用的gzip方式压缩的,不能使用bzip2的方式进行查看

tar -tzvf frameset.tar.gz  查看压缩包(不带v不显示详情)

ls

rm -rf frameset 删除源目录

tar -xjvf frameset.tar.gz 解压错误 压缩文件使用的gzip方式压缩的,不能使用bzip2的方式进行解压

tar -xzvf frameset.tar.gz 解压 没有-C 默认解压到当前目录

ls

ls /tmp

tar -xzvf  frameset.tar.gz  -C  /tmp/ 解压到指定目录

ls /tmp

ls /tmp/frameset

tar -cjvf frameset.tar.bz2  frameset 使用bzip2方式进行压缩

ls

 tar -tjvf frameset.tar.bz2 查看压缩包

rm -rf frameset 删除源目录

ls 查看

tar -xjvf frameset.tar.bz2 解压到当前目录

3.1.4 角色,权限和命令:

四种角色:

 

第1位:文件类型(d 目录,- 普通文件,l 链接文件)

“-”表示普通文件;

“d”表示目录;

“l”表示链接文件;

“p”表示管理文件;

“b”表示块设备文件;

“c”表示字符设备文件;

“s”表示套接字文件;

第2-4位:所属用户权限,用u(user)表示

第5-7位:所属组权限,用g(group)表示

第8-10位:其他用户权限,用o(other)表示

第2-10位:表示所有的权限,用a(all)表示

三种基本权限:

r 读权限(read)

w 写权限(write)

x 执行权限 (execute)

chmod修改文件权限命令(change mode)

参数:-R 下面的文件和子目录做相同权限操作(Recursive递归的)

例如:chmod u[go/a]+/-x[rw] a.txt

用数字来表示权限(r=4,w=2,x=1,-=0)

例如:chmod 750 b.txt

rwx用二进制表示是111,十进制4+2+1=7

r-x用二进制表示是101,十进制4+0+1=5

3.2 系统检测和维护

3.2.1 常用命令:

fdisk -l 查看当前磁盘的详细信息(结合lsblk)

结果解释:

在Linux 是通过hd*x 或 sd*x 表示的,其中 * 表示的是a、b、c …… …… x表示的数字 1、 2、3 …… …… hd大多是IDE硬盘;sd大多是SCSI或移动存储

磁盘大小= 磁头->柱面->扇面->每个扇区固定大小512bytes

df 显示文件系统磁盘空间的使用情况

df 默认显示所有当前已挂载文件系统的磁盘空间使用情况

df -h 以人类可读方式显示

df -h /bin 显示某一个文件夹所在磁盘的使用情况

du 显示指定的文件(目录)已使用的磁盘空间的总

-h文件大小以K,M,G为单位显示(human-readable)

-s只显示各档案大小的总合(summarize)

free 显示当前内存和交换空间的使用情况

netstat 是在内核中访问网络及相关信息的程序,它能提供TCP连接,TCP和UDP监听,进程内存管理的相关报告。

yum install net-tools -y

-a 显示所有连接和监听端口

-t (tcp)仅显示tcp相关选项

-u (udp)仅显示udp相关选项

从整体上看,netstat的输出结果可以分为两个部分:

一个是Active Internet connections,称为有源TCP连接,其中"Recv-Q"和"Send-Q"指的是接收队列和发送队列。这些数字一般都应该是0。如果不是则表示软件包正在队列中堆积。这种情况只能在非常少的情况见到。

另一个是Active UNIX domain sockets,称为有源Unix域套接口(和网络套接字一样,但是只能用于本机通信,性能可以提高一倍)。

Proto显示连接使用的协议,RefCnt表示连接到本套接口上的进程号,Types显示套接口的类型,State显示套接口当前的状态,Path表示连接到套接口的其它进程使用的路径名。

netstat -a | grep 52 根据查询结果集筛选想要的结果

netstat -t | grep 52

ip addr 网卡网络配置详解

lo 是回环地址,经常被分配到127.0.0.1地址上,用于本机通信,经过内核处理后直接返回,不会在任何网络中出现。

ens33:网卡名

<BROADCAST,,MULTICAST,UP,LOWER_UP> 这个叫作net_device flags,网络设备状态标识。

UP 表示网卡处于启动的状态;

BROADCAST 表示这个网可以发送广播包;

MULTICAST 表示网卡可以发送多播;

LOWER_UP表示网线插着;

MTU1500是指最大传输单元 MTU 为 1500,这是以太网的默认值。MTU 是二层 MAC 层的概念。MAC 层有 MAC 的头,以太网规定连 MAC 头带正文合起来,不允许超过 1500 个字节。正文里面有 IP 的头、TCP、HTTP的头。如果放不下,就需要分片来传输。

qdisc 全称是queueing discipline,中文叫排队规则。内核如果需要通过某个网络接口发送数据包,它都需要按照为这个接口配置的 qdisc ( 排队规则 ) 把数据包加入 队列。 最简单的 qdisc 是 pfifo,它不对进入的数据包做任何的处理,数据包采用先入先出的方式通过队列。pfifo_fast 稍微复杂一些,它的队列包括三个波段 ( band ) 。在每个波段里面,使用先进先出 规则。 三个波段 ( band ) 的优先级也不相同。band 0 的优先级最高,band 2 的最低。如果 band 0 里面 有数据包,系统就不会处理 band 1 里面的数据包,band 1 和 band 2之间也是一样。 数据包是按照服务类型 ( Type of Service,TOS ) 被分配多三个波段 ( band ) 里面的。TOS 是 IP 头 里面的一个字段,代表了当前的包是高优先级的,还是低优先级的。 然而这里是mq,还木有搞懂是什么样的队列处理方式。 lo中的fq_codel是多队列处理,每一个数据流都有一个队列处理。

 link/ether:这个是MAC地址,唯一的,一块网卡一个MAC。

ping 测试网络的连通性

ping www.baidu.com

3.2.2 进程与服务

进程概念

(a)进程是正在运行的程序实体,并且包括这个运行的程序中占据的所有系统资源,比如说CPU(寄存器),IO,内存,网络资源等。

(b)很多人在回答进程的概念的时候,往往只会说它是一个运行的实体,而会忽略掉进程所占据的资源。比如说,同样一个程序,同一时刻被两次运行了,那么他们就是两个独立的进程。

Linux中的三种进程

(1)交互进程是由一个Shell启动的进程。交互进程既可以在前台运行,也可以在后台运行。

(2)批处理进程和终端没有联系,是一个进程序列。

(3)监控进程(也称系统守护进程) Linux系统启动时启动的进程,并在后台运行。例如,httpd是著名的Apache服务器的监控进程。

进程相关命令:

top 显示当前系统中耗费资源最多的进程

用途: 可以通过top命令查看系统的CPU、内存、运行时间、交换分区、执行的线程等信息。通过top命令可以有效的发现系统的缺陷出在哪里。是内存不够、CPU处理能力不够、IO读写过高

信息解读

前五行是系统整体的统计信息。

第一行是任务队列信息,同 uptime 命令的执行结果。

13:01:49   当前时间 

up 13 min   系统运行时间 

1 user   当前登录用户数 

load average: 0.00, 0.03, 0.06   系统负载,即任务队列的平均长度。 

三个数值分别为 1分钟、5分钟、15分钟前到现在的平均值。 

第二、三行为进程和CPU的信息。当有多个CPU时,这些内容可能会超过两行。内容如下: 

Tasks:

total   进程总数 

running   正在运行的进程数 

sleeping   睡眠的进程数 

stopped   停止的进程数 

zombie   僵尸进程数 

Cpu(s): 

us   用户空间占用CPU百分比 

sy   内核空间占用CPU百分比 

ni   用户进程空间内改变过优先级的进程占用CPU百分比 

id   空闲CPU百分比 

wa   等待输入输出的CPU时间百分比 

hi   硬中断(Hardware IRQ)占用CPU的百分比

si   软中断(Software Interrupts)占用CPU的百分比

st   (Steal time) 是当 hypervisor 服务另一个虚拟处理器的时候,虚拟 CPU 等待实际 CPU 的时间的百分比。

最后两行为内存信息。内容如下: 

Mem: 

total   物理内存总量 

used   使用的物理内存总量 

free   空闲内存总量 

buffers   用作内核缓存的内存量 

Swap: 

total   交换区总量 

used   使用的交换区总量 

free   空闲交换区总量 

cached   缓冲的交换区总量。 

内存中的内容被换出到交换区,而后又被换入到内存,但使用过的交换区尚未被覆盖, 

该数值即为这些内容已存在于内存中的交换区的大小。 

相应的内存再次被换出时可不必再对交换区写入。 

ps report a snapshot of the current processes 显示瞬间的进程状态

-e /-A 显示所有进程,环境变量

-f 全格式

ps –ef | grep java #表示查看所有进程里 CMD 是 java 的进程信息;

启动3个会话窗口:

man ls 第一个会话窗口

man ps 第2个会话窗口

ps -ef |grep man |grep -v grep 第3个会话窗口 看到两个帮助进程 看到含有man帮助的两个进程,并且 不包含grep自身在内

ps -ef|grep结果详解

UID      :程序被该 UID 所拥有

PID      :就是这个程序的 ID

PPID    :则是其上级父程序的ID

C          :CPU使用的资源百分比

STIME :系统启动时间

TTY     :登入者的终端机位置

TIME   :使用掉的CPU时间。

CMD   :所下达的是什么指令

ps -ef | grep 关键字

ps -ef |grep sshd

ps -ef|grep sshd|grep -v grep 排除grep本身进程,显示含有sshd的

ps -e --no-header|grep -v ps|wc -l

kill 杀死一个进程

(1)背景,当程序出错造成死锁,或者内存消耗过大造成卡机,杀;

(2)格式: kill -9 PID

(3 ) 示例:kill -9 324,

(4)使用后一般使用下面命令释放内存:#free 

kill命令的改进killall

(1) Linux下还提供了一个killall命令,可以直接使用进程的名字而不是进程标识号,

例如:# killall -9 NAME

(2)使用后一般使用下面命令释放内存:#free 

启动3个会话窗口:

ping www.baidu.com 第一个会话窗口

ping localhost 第2个会话窗口

ps -ef |grep ping |grep -v grep 第3个会话窗口 看到两个ping进程 看到含有ping的两个进程,并且 不包含grep自身在内

可以看到pid

kill -9 pid pid 动态的

3.2.3 定时任务

第一步,查看cron服务是否开启

service crond status

或者

systemctl status crond

第二步 ,查看当前的定时任务

crontab -l

第三步 ,编辑crontab -e

第四步 ,检查效果

取消定时任务 crontab -r

定时任务格式:

分0-59 小时0-23 日1-31 月1-12 星期0-6 命令

“*”代表取值范围内的数字 ,

“/”代表”每隔”,

“-”代表从某个数字到某个数字, 10-15 * * * * 每一小时的10到15分钟

“,”分开几个离散的数字 10,12,15 * * * * 每一小时的第10,12,15执行

*/5 * * * * date>aaa.txt 指定每隔5分钟执行一次输出命令

30 5 * * * date>aaa.txt 指定每天的 5:30 执行输出命令

30 7 8 * * date>aaa.txt 指定每月8号的7:30分执行输出命令

30 5 8 6 * date>aaa.txt 指定每年的6月8日5:30执行输出命令

30 6 * * 0 date>aaa.txt 指定每星期日的6:30执行输出命令

[注:0表示星期天,1表示星期1, 以此类推,也可以用英文来表示,sun表示星期天,mon表示星期一等。]

30 3 10,20 * * date>aaa.txt 每月10号及20号的3:30执行输出命令[注:“,”用来连接多个不连续的时段]

25 8-11 * * * date>aaa.txt 每天8-11点的第25分钟执行ls命令[注:“-”用来连接连续的时段]

*/15 * * * * date>aaa.txt 每15分钟执行一次ls命令 [即每个小时的第0 15 30 45 60分钟执行ls命令 ]

30 6 */10 * * date>aaa.txt 每个月中,每隔10天6:30执行一次ls命令[即每月的1、11、21、31日是的6:30执行一次ls 命令。 ]

每天7:50以root 身份执行/etc/cron.daily目录中的所有可执行文件

50 7 * * * root run-parts /etc/cron.daily [ 注:run-parts参数表示,执行后面目录中的所有可执行文件。

示例:

crontab -e 编辑定时器

* * * * *  date>>aaa.log 每分钟把当前时间追加到aaa.log一次

*/3 * * * *  ls / >>bbb.log 每隔3分钟 把ls /的执行结果追加到bbb.log中

5,10,15,20 10-20  * * *   ls /var>>ccc.log   每天10:05 10:10 10:15,10:20, 11:05 11:10 11:15,11:20, ... 20:05 20:10 20:15,20:20 定时任务可以执行一次

crontab -r 取消定时任务

。。。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值