一、操作系统与用户接口
操作系统由三部分组成:内核(用来管理硬件资源),应用程序(用来管理软件资源),库。
用户接口(其实就是应用程序)分为两类:GUI接口(图形桌面接口),CLI接口(命令行用户接口)
对于GUI:针对linux系统有三种(Gnome,KDE,Xface);针对windows系统(explore.exe)
对于CLI:针对linux系统有六种(sh,bash,cash,ksh,zsh,tcsh);针对windows系统(cnd应用程序)
df命令用来查看磁盘空间(看到的/dev/sda1---虚拟机,/dev/vda2---真机。这些都是安装系统时分的区)
二、查看进程
1.图形化方式查看
方法1.Applications---System Tools---System Monitor进行查看
方法2.命令行方式:gnome-system-monitor
2.命令行查看进程
命令 | ps | ps | ps | ps | ps | ps | ps | ps |
参数 | -A | -a | -u | a | x | f | e | |
含义 | 查看所有进程 | 查看在当前环境中(现行终端机)运行的进程,不包含环境信息 | 显示进程用户信息 | 查看在当前环境中(现行终端机)运行的进程,包含环境信息 | 列出系统中所有运行包含tty设备(字符设备)的进程 | 显示父子进程关系 | 显示进程的详细信息(系统的资源调用) |
3.一个虚拟机的某个终端的东西在另一个终端上面显示?
示例:在1号终端上输入date命令,然后输入date > dev/pts/2(将1号终端上的date命令的结果显示到2号终端上面,其中/dev/pts/2是通过ps命令查看的---查看的是该bash所对应的字符设备(TTY))
三、ps命令的常用组合
ps aux | ps ef | ps ax |
显示系统中所有进程并显示进程用户 | 显示进程详细信息并显示进程父子关系 | 显示系统中的所有进程 |
注意:通过pstree命令可以查看进程开启的目录数(可以看到所有进程的初始化进程是systemd)
四、显示进程的指定信息
ps ax -o xxx | ps ax -o comm | ps ax -o user | ps ax -o group | ps ax -o %cpu | ps ax -o %mem | ps ax -o pid | ps ax -o nice |
显示进程的指定信息 | 显示进程名称 | 显示进程用户 | 显示进程所属组 | 显示进程cpu使用率 | 显示进程内存使用率 | 显示进程id | 显示进程优先级 |
五、进程排序
ps ax --sort=+%cpu/-%cpu 按照cpu的使用率进行排序(+表示从小到大排序,-表示从大到小排序)
ps ax --sort=+%mem/-%mem 按照内存的使用率进行排序(+表示从小到大排序,-表示从大到小排序)
示例:显示系统中cpu占用率前5的进程:
方法1:ps ax --sort=-%cpu -o %cpu | head -n 6 | tail -n 5;
方法2:ps ax --sort=-%cpu -o %cpu | head -n 6 | grep -v %CPU
示例:显示系统中内存使用率前5的进程:
方法1:ps ax --sort=-%mem -o %mem,pid,comm | head -n 6 | grep -v %MEM
方法2:ps ax --sort=-%mem -o %mem,pid,comm | head -n 6 | grep -v PID
方法3:ps ax --sort=-%mem -o %mem,pid,comm | head -n 6 | grep -v COMMAND
方法4:ps ax --sort=-%mem -o %mem,pid,comm | grep -v %MEM | head -n 5
注意:grep -v 后面是要区分大小写的;
grep的用法:grep 关键字,抓取出来的是一行一行的信息
其中grep表示抓取的意思,例如,cat /etc/passwd | grep root表示显示/etc/passwd文件中的含有root关键字的信息
那么-v表示反向抓取,即不含有关键字的信息
六、stat中显示的信息
S | l | N | < | + | s |
进程的状态(S表示休眠状态,即在等待某个事件,信号。常见的进程状态有6种,D表示不可中断的休眠;R表示正在运行或者在运行队列中等待;S表示休眠,即在等待某个事件,信号;T表示停止;X表示杀掉的进程,不应该出现;Z表示僵死进程) | 内存中有锁定空间 | 优先级低 | 优先级高 | 前台运行 | 顶级进程 |
1.gedit & 表示gedit这个记事本在后台运行(状态会显示Sl--表示内存中有锁定空间)
将gedit关掉
2.gedit 表示gedit这个记事本在前台运行
将其强制关闭之后,显示被杀死
gedit进程直接被杀死(使用ctrl+c)
3.只要输入过命令gedit &,并且不关闭,那么下次输入命令gedit,也默认的是后台运行。
4.输入命令gedit相当于是前台运行。如果接下来使用ctrl+c会新开一行命令行,那么相当于强制关闭了这个进程;但是如果使用ctrl+z也会新开一行命令行,但是没有杀死这个进程。通过ps ax 查看会发现此进程变成了僵死进程(该gedit记事本所有的键都不能使用了)
七、进程优先级
1.进程优先级的范围:-20~19,数字越小表示优先级越高,数字越大表示优先级越小
2.优先级的查看:ps ax -o pid,nice,comm
3.指定某个优先级开启进程:nice -n 优先级数字 进程名称
示例:nice -n -5 vim & 开启vim并指定成优先级为-5
4.改变进程优先级:renice -n 优先级数字 进程pid
示例:renice -n 5 1234 改变进程号为1234的进程的优先级为-5
ps ax -o comm,pid,nice,stat 用来查看指定的信息,输入该命令之后,会发现该进程的优先级已经发生了变化。
八、环境中进程的前后台调用
1.前后台调用命令:
(1)jobs 查看被打入环境后台的进程
(2)ctrl+z 把占用终端的进程打入后台
(3)bg jobnum 把后台暂停的进程运行
(4)fg jobnum 把后台进程调回前台
(5)comm & 让命令直接在后台运行
2.vim只能使用fg命令,不可以使用bg命令,因为vim命令只能在前台运行。
3.gedit既可以在前台运行也可以在后台运行。使用gedit,在前台运行,按下ctrl+z,将其打入后台,会显示已经停止,通过ps ax命令查看时显示的状态是僵死状态;使用gedit,在前台运行,按下ctrl+c,直接将该进程杀死,什么都不显示,通过ps ax命令查看时,没有该进程。使用gedit &,在后台运行。
4.当fg和bg后面都不跟相应的jobnum时,会默认显示数字后面带+,其次是后面带-。当有多个时,执行完+,之后用过jobs命令查看,+,-号的位置会发生变化,但是数字不会发生变化。
5.jobs命令查看到的状态有四种(running---正在后台运行的,stopped---被中断的,Done---在后台运行结束的,killed---强制通过手点"x"的方式杀死的,而不是通过ctrl+c)
九、进程信号
1.信号等级
1 | 2 | 3 | 9 | 15 | 18 | 19 | 20 |
进程重新加载配置 | 删除进程在内存中的数据 | 删除鼠标在内存中的数据 | 强行结束单个进程(不可被阻塞) | 正常关闭进程(可能会被阻塞) | 运行暂停的进程 | 暂停某个进程(不可被阻塞) | 把进程打入后台(可能会被阻塞) |
针对2:
示例:在一个终端上输入ps命令查看该bash的pid,然后输入abcdef但是不运行,在另外一个终端上输入kill -2 pid 会发现那个终端上相当于自动加了ctrl+c,即新开了一行 |
针对3:
示例:ctrl+\之后,鼠标不显示了,需要再手动一下鼠标才能显示出来 |
针对9:
示例:kill - 9 bash的pid 会成功(即强行结束了bash这个进程) |
针对15:
示例:在一个终端上输入gedit &,然后输入ps命令查看gedit &的pid,在另外一个终端上输入kill -15 pid 显示关闭了那个终端上的gedit(没有被阻塞) 但是,在一个终端上输入ps命令查看该bash的pid,在另外一个终端上输入kill -15 pid 发现没有什么作用(被阻塞了) 但是kill -15 gedit &的pid 成功(即正常结束了gedit &这个进程) |
针对18:
示例:在另外一台终端上通过ps a命令查看那个终端的pid,然后kill -18 pid 发现那个终端上又可以输入命令了,同时会显示刚刚暂停之后输入的命令 |
针对19:
示例:在另外一个终端上通过ps a命令查看那个终端的pid,然后kill -19 pid 发现那个终端上输入命令之后不显示了,即暂停了; 在一个终端上输入vim进行编辑,然后在另外一个终端上通过ps a命令查看那个终端上vim的pid,输入命令kill -19 pid 发现那个终端上的vim退出来了。 |
2.所用命令
(1)kill -信号等级 进程id 结束指定的进程
(2)killall -信号等级 进程名 结束所有进程名的进程
(3)pkill -u student(用户) -信号等级 结束某个用户的进程
十、进程的动态监控
使用top命令
1 | s | c | m | h | u | k | q |
显示cpu每个核的负载(切换看的是cpu的变化) | 调整刷新频率 | CPU负载排序 | 内存使用量排序 | 查看帮助 | 查看指定用户进程 | 对指定进程发起信号 | 退出 |
十一、IP地址的修改
1.图形化方式修改
(1)nm-connection-editor;
(2)删除System eth0;
(3)点击add;
(4)选择Ethernet;
(5)输入Connection name(一般为eth0);
(6)选择Device Mac address;
(7)进入IPv4 Settings,将method由DHCP改为Manual;
(8)点击Add,输入Address和Netmask(子网掩码24,或者写成225.225.225.0)Gateway(网关)不用输入。
(9)点击save即可
子网掩码的介绍:
例如:110.0.0.1/16表示:其实IP为110.0.0.1,子网掩码为16(代表掩盖掉16位,即前16位不能变),那么结束IP为110.0.225.225。一个IP为4的IP地址要用4个字节来存放(一个字节8位),那么整个IP要用32位来存放。一个IP为4的IP地址最大为255.255.255.255
例如:192.168.1.1/24 起始IP地址为:192.168.1.1 结束IP地址为192.168.255.255
十二、IP地址的查看
1.ifconfig 查看当前系统的IP地址
2.ifconfig eth0 查看网卡eth0的IP地址
3.ifconfig br0 查看网卡br0的IP地址
4.ip addr show br0 查看网卡br0的详细IP地址(一个网卡可以有多个ip地址)
十三、主机名的修改
1.hostname 查看主机名
2.hostnamectl set-hostname 修改之后的主机名 修改主机名
注意:修改完主机名之后,需要把终端关掉,重新开才会生效
十四、控制服务
1.什么是服务?服务开启对本机无意义,对客户有意义
2.用什么控制服务?系统初始化进程可以对服务进行相应的控制
3.当前系统初始化进程是什么?systemd(通过pstree命令查看)
4.进程控制命令
ssh sshd
client(客户端) server(服务端)
systemctl status 服务名(sshd) | systemctl start 服务名(sshd) | systemctl stop 服务名(sshd) | systemctl restart 服务名(sshd) | systemctl reload 服务名(sshd) | systemctl enable 服务名(sshd) | systemctl disable 服务名(sshd) | systemctl list-units | systemctl list-unit-files | systemctl list-dependices |
查看服务状态,active(可用),inactive(不可用) | 开启服务 | 关闭服务 | 重启服务 | 重新加载服务配置 | 设定开机自启动 | 设定开机不启动 | 列出已经开启服务的当前状态 | 列出所有服务的开机启动状态(enabled--开机自启动,disabled--开机不启动,static--静态的,即需要依赖别人的开启而开启,masked--隐藏的) | 列出服务的依赖性 示例:systemctl list-dependencies sshd 列出ssd服务的依赖性 |
systemctl set-default multi-user.target | systemctl set-default grarhical.target | systemctl mask firewalled.service | systemctl umask firewalled.service |
设定系统启动级别为多用户模式(无图形模式)(init 3可以由图形模式切换到无图形模式) | 设定系统启动级别为图形模式(init 5或者startx可以由无图形模式切换到图形模式) | 设置防火墙开机是隐藏的,即不能开启该服务 | 设置防火墙开机不是隐藏的,即可以开启该服务 |
5.注意:当把sshd的进程杀掉之后,重新systemctl start sshd服务时,进程号pid会发生变化;
systemcytl restart sshd,进程号pid会发生变化;
systemctl reload sshd,进程号pid不会发生变化;
当别人已经通过ssh连接之后,如果利用命令systemctl stop ssd之后,别人不会退出来。只有当关掉系统之后,别人才能退出来。