文章目录
具体内容
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 一次在某一个目录下创建多个目录
ls spring
ls /var/
mkdir ../var/aaa ../var/bbb 相对路径创建多个目录
ls /var/
mkdir aa/bb/cc/dd 错误的 因为创建dd时,cc不存在 。。。。
mkdir -p aa/bb/cc/dd
ls
ls aa
....
创建文件
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 串联文件并打印到标准输出
显示一个文件的全部内容
具体实例:
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 'qy149' > b.txt
echo 'qy149' > 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行
head -2 tomcat.log
head -20 tomcat.log
tail:
output the last part of files 输出文件的末尾部分
选项:
-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 settings.xml
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
cd ../
pwd
cd ../../
pwd
移动文件或者重命名
mv move (rename) files 移动/重命名 文件 相当于windows中的ctrl+x ctrl+v
具体用法:
ls
ls spring
mv b.txt spring 移动b.txt 文件到 目录中
ls 发现b.txt没有了
ls spring 发现b.txt
ls /var/log/
mv /root/c.txt /var/log/ 移动c.txt到 /var/log/
ls 发现c.txt没有了
ls /var/log/ 发现c.txt
ls
mv springboot/ frames/ 移动目录到另外一个目录中
ls
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
ls
rm -rf aa spring/ settings.xml 移动多个文件和目录
ls
文件统计
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 '*t*'
find /etc -name '*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 解压到当前目录
ls
ls frameset
ls /var
tar -xjvf frameset.tar.bz2 -C /var/ 解压到指定的/var目录
ls /var/
ls /var/frameset/
3.2 角色,权限和命令:
第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.3 系统检测和维护
3.3.1 常用命令:
fdisk -l 查看当前磁盘的详细信息(结合lsblk)
结果解释:
在Linux 是通过hdx 或 sdx 表示的,其中 * 表示的是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.3.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.3.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 * * * * ls 指定每小时的第5分钟执行一次ls命令
30 5 * * * ls 指定每天的 5:30 执行ls命令
30 7 8 * * ls 指定每月8号的7:30分执行ls命令
30 5 8 6 * ls 指定每年的6月8日5:30执行ls命令
30 6 * * 0 ls 指定每星期日的6:30执行ls命令
[注:0表示星期天,1表示星期1, 以此类推,也可以用英文来表示,sun表示星期天,mon表示星期一等。]
30 3 10,20 * * ls 每月10号及20号的3:30执行ls命令[注:“,”用来连接多个不连续的时段]
25 8-11 * * * ls 每天8-11点的第25分钟执行ls命令[注:“-”用来连接连续的时段]
*/15 * * * * ls 每15分钟执行一次ls命令 [即每个小时的第0 15 30 45 60分钟执行ls命令 ]
30 6 */10 * * ls 每个月中,每隔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 取消定时任务
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/75474.html