当前位置: 首页 > news >正文

玩具网站建设方案外国男男做暧暧视频网站

玩具网站建设方案,外国男男做暧暧视频网站,展示产品的网站,wordpress wp_parse_args【BASH】回顾与知识点梳理 三十一 三十一. 进程的管理31.1 给进程发送讯号kill -signal PIDlinux系统后台常驻进程killall -signal 指令名称 31.2 关于进程的执行顺序Priority 与 Nice 值nice #xff1a;新执行的指令即给予新的 nice 值renice #xff1a;已存在进程的 nice… 【BASH】回顾与知识点梳理 三十一 三十一. 进程的管理31.1 给进程发送讯号kill -signal PIDlinux系统后台常驻进程killall -signal 指令名称 31.2 关于进程的执行顺序Priority 与 Nice 值nice 新执行的指令即给予新的 nice 值renice 已存在进程的 nice 重新调整 31.3 系统资源的观察free 观察内存使用情况uname查阅系统与核心相关信息uptime观察系统启动时间与工作负载netstat 追踪网络或插槽文件dmesg 分析核心产生的讯息vmstat 侦测系统资源变化 31.4 特殊文件与进程具有 SUID/SGID 权限的指令执行状态/proc/* 代表的意义查询已开启文件或已执行进程开启之文件fuser藉由文件(或文件系统)找出正在使用该文件的进程lsof 列出被进程所开启的文件档名pidof 找出某支正在执行的程序的 PID 该系列目录 -- 【BASH】回顾与知识点梳理目录 三十一. 进程的管理 31.1 给进程发送讯号 进程之间是可以互相控制的举例来说你可以关闭、重新启动服务器软件服务器软件本身是个进程 你既然可以让她关闭或启动当然就是可以控制该进程啦那么进程是如何互相管理的呢其实是透过给予该进程一个讯号 (signal) 去告知该进程你想要让她作什么因此这个讯号就很重要啦 要给予某个已经存在背景中的工作某些动作时是直接给予一个讯号给该工作号码即可。那么到底有多少 signal 呢 你可以使用kill -l(小写的 L ) 或者是 man 7 signal 都可以查询到主要的讯号代号与名称对应及内容是 代号名称内容1SIGHUP启动被终止的进程可让该 PID 重新读取自己的配置文件类似重新启动2SIGINT相当于用键盘输入 [ctrl]-c 来中断一个进程的进行9SIGKILL代表强制中断一个进程的进行如果该进程进行到一半 那么尚未完成的部分可能会有『半产品』产生类似 vim 会有 .filename.swp 保留下来。15SIGTERM以正常的结束进程来终止该进程。由于是正常的终止 所以后续的动作会将他完成。不过如果该进程已经发生问题就是无法使用正常的方法终止时 输入这个 signal 也是没有用的。19SIGSTOP相当于用键盘输入 [ctrl]-z 来暂停一个进程的进行 上面仅是常见的 signal 而已更多的讯号信息请自行 man 7 signal 吧一般来说你只要记得『1, 9, 15』这三个号码的意义即可。那么我们如何传送一个讯号给某个进程呢就透过 kill 或 killall 吧底下分别来看看 kill -signal PID kill 可以帮我们将这个 signal 传送给某个工作 (%jobnumber) 或者是某个 PID (直接输入数字)。 要再次强调的是 kill 后面直接加数字与加上 %number 的情况是不同的 这个很重要喔因为工作控制中有 1 号工作但是 PID 1 号则是专指『 systemd 』这支程序你怎么可以将 systemd 关闭呢 关闭 systemd 你的系统就当掉了啊所以记得那个 % 是专门用在工作控制的喔 我们就活用一下 kill 与刚刚上面提到的 ps 来做个简单的练习吧 例题以 ps 找出 rsyslogd 这个进程的 PID 后再使用 kill 传送讯息使得 rsyslogd 可以重新读取配置文件。 答由于需要重新读取配置文件因此 signal 是 1 号。至于找出 rsyslogd 的 PID 可以是这样做 ps aux | grep rsyslogd | grep -v grep| awk {print $2} 接下来则是实际使用 kill -1 PID因此整串指令会是这样 kill -SIGHUP $(ps aux | grep rsyslogd | grep -v grep| awk {print $2}) 如果要确认有没有重新启动 syslog 可以参考登录档的内容使用如下指令查阅 tail -5 /var/log/messages 了解了这个用法以后如果未来你想要将某个莫名其妙的登入者的联机删除的话就可以透过使用pstree -p 找到相关进程 然后再以kill -9将该进程删除该条联机就会被踢掉了这样很简单吧 linux系统后台常驻进程 进程名说明systemd是 Linux 中最新的启动进程系统它被设计为用于管理和监控整个系统的进程。systemd 可以启动其他进程跟踪它们的 PID当需要停止进程时用 systemd 可以很容易地终止进程。在命令行中我们可以使用以下命令来启动和停止 systemd 进程systemctl start systemdsystemctl stop systemdcrondcrond 是一个用于定时任务的进程它可以在指定的时间运行命令或脚本。通过 crontab 命令用户可以创建或修改定时任务crond 每分钟扫描一次任务列表执行满足条件的任务。systemctl start crondsystemctl stop crondsshdsshd 是一个用于远程登录的安全 shell 服务进程它使用户可以从远程系统登录并管理本地系统。作为一种安全的远程登录方式sshd 提供了密钥交换和加密通信等功能确保用户的登录数据和命令不被窃取和篡改。systemctl start sshdsystemctl stop sshdnetworknetwork 进程是一个核心网络配置的进程它包含了 Linux 网络设置中的所有业务代码包括网络命令网络状态监测网络配置的重启等等。当我们需要配置网络修改 IP 地址打开 or 关闭子网时我们通常使用以下命令来启动和停止 network 进程systemctl start networksystemctl stop networkrsyslogdrsyslogd 又称系统日志服务它是一个日志转发的进程可以将 Linux 系统的日志信息发送到本地或远程服务器中使我们能够在一个地方查看所有系统日志信息。systemctl start rsyslogdsystemctl stop rsyslogddbus-daemondbus-daemon 是一个进程总线的守护进程它是一个 Linux 系统中的消息路由器允许不同的进程通过它而相互通信。通过 dbus-daemon系统进程之间可以相互发送信息进行通信从而实现相互协作。systemctl start dbus-daemonsystemctl stop dbus-daemonudevdudev 是 Linux 中的设备管理机制可以自动检测和管理系统中的硬件设备。通过 udev当新的硬件设备连接到系统时系统会自动识别该设备并创建相应的设备节点等信息从而让 Linux 系统更好地识别管理和使用硬件设备。systemctl start udevdsystemctl stop udevdkerneloopskerneloops 是一个收集 Linux 内核崩溃信息和提供给用户的简单工具它可以检测 Linux 内核的错误收集相关信息并将错误信息发送到相关服务器然后对异常做统计分析从而让用户更好地了解系统崩溃的情况。systemctl start kerneloopssystemctl stop kerneloopstunedtuned 是一个可以优化 Linux 系统性能的工具它可以根据系统负载和特定配置策略来调整系统的资源分配和管理从而提高系统运行效率和稳定性。systemctl start tunedsystemctl stop tunednscdnscd 是一个进程缓存的守护进程并通过本地缓存重新获取常用的系统数据以避免不必要的系统资源浪费和网络带宽占用。nscd 可以缓存每个用户和组的信息提高系统处理速度。systemctl start nscdsystemctl stop nscdVGAuthServiceVMware Guest Authentication Service 相关进程NetworkManager和network相似都是网络管理工具一般有一个即可dhclientDHCP client为动态主机配置协议客户端。DHCP 客户端 dhclient 提供了一种使用动态主机配置协议 和 BOOTP 协议配置一个或多个网络接口的方法。如果这些协议失败则通过静态分配地址来配置。 killall -signal 指令名称 由于 kill 后面必须要加上 PID (或者是 job number)所以通常 kill 都会配合 ps, pstree 等指令因为我们必须要找到相对应的那个进程的 ID 嘛但是如此一来很麻烦有没有可以利用『下达指令的名称』来给予讯号的举例来说能不能直接将 rsyslogd 这个进程给予一个 SIGHUP 的讯号呢可以的用 killall 吧 [rootstudy ~]# killall [-iIe] [command name] 选项与参数 -i interactive 的意思交互式的若需要删除时会出现提示字符给用户 -e exact 的意思表示『后面接的 command name 要一致』但整个完整的指令不能超过 15 个字符。 -I 指令名称(可能含参数)忽略大小写。# 范例一给予 rsyslogd 这个指令启动的 PID 一个 SIGHUP 的讯号 [rootstudy ~]# killall -1 rsyslogd # 如果用 ps aux 仔细看一下若包含所有参数则 /usr/sbin/rsyslogd -n 才是最完整的# 范例二强制终止所有以 httpd 启动的进程 (其实并没有此进程在系统内) [rootstudy ~]# killall -9 httpd# 范例三依次询问每个 bash 程序是否需要被终止运作 [rootstudy ~]# killall -i -9 bash Signal bash(13888) ? (y/N) n 这个不杀 Signal bash(13928) ? (y/N) n 这个不杀 Signal bash(13970) ? (y/N) n 这个不杀 Signal bash(14836) ? (y/N) y 这个杀掉 # 具有互动的功能可以询问你是否要删除 bash 这个程序。要注意若没有 -i 的参数 # 所有的 bash 都会被这个 root 给杀掉包括 root 自己的 bash 喔 ^_^总之要删除某个进程我们可以使用 PID 或者是启动该进程的指令名称 而如果要删除某个服务呢呵呵最简单的方法就是利用 killall 因为他可以将系统当中所有以某个指令名称启动的进程全部删除。 举例来说上面的范例二当中系统内所有以 httpd 启动的进程就会通通的被删除啦 ^_^ 31.2 关于进程的执行顺序 我们知道 Linux 是多人多任务的环境由 top 的输出结果我们也发现 系统同时间有非常多的进程在运行中只是绝大部分的进程都在休眠 (sleeping) 状态而已。 想一想如果所有的进程同时被唤醒那么 CPU 应该要先处理那个进程呢也就是说那个进程被执行的优先序比较高 这就得要考虑到进程的优先执行顺序 (Priority) 与 CPU 排程啰 CPU 排程与前一章的例行性工作排程并不一样。 CPU 排程指的是每支进程被 CPU 运作的演算规则 而例行性工作排程则是将某支程序安排在某个时间再交由系统执行。 CPU 排程与操作系统较具有相关性 Priority 与 Nice 值 我们知道 CPU 一秒钟可以运作多达数 G 的微指令次数透过核心的 CPU 排程可以让各进程被CPU 所切换运作 因此每个进程在一秒钟内或多或少都会被 CPU 执行部分的脚本。如果进程都是集中在一个队列中等待 CPU 的运作 而不具有优先级之分也就是像我们去游乐场玩热门游戏需要排队一样每个人都是照顺序来 你玩过一遍后还想再玩 (没有执行完毕)请到后面继续排队等待。情况有点像底下这样 上图中假设 pro1, pro2 是紧急的进程 pro3, pro4 是一般的进程在这样的环境中由于不具有优先级 唉啊pro1, pro2 还是得要继续等待而没有优待呢如果 pro3, pro4 的工作又臭又长那么紧急的 pro1, pro2 就得要等待个老半天才能够完成真麻烦啊所以啰我们想要将进程分优先级啦如果优先序较高则运作次数可以较多次 而不需要与较慢优先的进程抢位置我们可以将进程的优先级与 CPU 排程进行如下图的解释 如上图所示具高优先权的 pro1, pro2 可以被取用两次而较不重要的 pro3, pro4 则运作次数较少。如此一来 pro1, pro2 就可以较快被完成啦要注意上图仅是示意图并非较优先者一定会被运作两次啦 为了要达到上述的功能我们 Linux 给予进程一个所谓的『优先执行序 (priority, PRI)』这个 PRI 值越低代表越优先的意思。不过这个 PRI 值是由核心动态调整的用户无法直接调整 PRI 值的。先来瞧瞧 PRI 曾在哪里出现 [rootstudy ~]# ps -l F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD 4 S 0 14836 14835 0 90 10 - 29068 wait pts/0 00:00:00 bash 0 R 0 19848 14836 0 90 10 - 30319 - pts/0 00:00:00 ps # 你应该要好奇怎么我的 NI 已经是 10 了还记得刚刚 top 的测试吗我们在那边就有改过一次喔由于 PRI 是核心动态调整的我们用户也无权去干涉 PRI 那如果你想要调整进程的优先执行序时就得要透过 Nice 值了Nice 值就是上表的 NI 啦一般来说 PRI 与 NI 的相关性如下 PRI(new) PRI(old) nice不过你要特别留意到如果原本的 PRI 是 50 并不是我们给予一个 nice 5 就会让 PRI 变成 55 喔 因为 PRI 是系统『动态』决定的所以虽然 nice 值是可以影响 PRI 不过 最终的 PRI 仍是要经过系统分析后才会决定的。另外 nice 值是有正负的喔而既然 PRI 越小越早被执行 所以当 nice 值为负值时那么该进程就会降低 PRI 值亦即会变的较优先被处理。此外你必须要留意到 nice 值可调整的范围为 -20 ~ 19 root 可随意调整自己或他人进程的 Nice 值且范围为 -20 ~ 19 一般使用者仅可调整自己进程的 Nice 值且范围仅为 0 ~ 19 (避免一般用户抢占系统资源)一般使用者仅可将 nice 值越调越高例如本来 nice 为 5 则未来仅能调整到大于 5 这也就是说要调整某个进程的优先执行序就是『调整该进程的 nice 值』啦那么如何给予某个进程 nice 值呢有两种方式分别是 一开始执行程序就立即给予一个特定的 nice 值用 nice 指令调整某个已经存在的 PID 的 nice 值用 renice 指令。 nice 新执行的指令即给予新的 nice 值 [rootstudy ~]# nice [-n 数字] command 选项与参数 -n 后面接一个数值数值的范围 -20 ~ 19。# 范例一用 root 给一个 nice 值为 -5 用于执行 vim 并观察该进程 [rootstudy ~]# nice -n -5 vim [1] 19865 [rootstudy ~]# ps -l F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD 4 S 0 14836 14835 0 90 10 - 29068 wait pts/0 00:00:00 bash 4 T 0 19865 14836 0 85 5 - 37757 signal pts/0 00:00:00 vim 0 R 0 19866 14836 0 90 10 - 30319 - pts/0 00:00:00 ps # 原本的 bash PRI 为 90 所以 vim 预设应为 90。不过由于给予 nice 为 -5 # 因此 vim 的 PRI 降低了RPI 与 NI 各减 5 但不一定每次都是正好相同喔因为核心会动态调整 [rootstudy ~]# kill -9 %1 测试完毕将 vim 关闭就如同前面说的 nice 是用来调整进程的执行优先级这里只是一个执行的范例罢了 通常什么时候要将 nice 值调大呢举例来说系统的背景工作中 某些比较不重要的进程之进行例如备份工作由于备份工作相当的耗系统资源 这个时候就可以将备份的指令之 nice 值调大一些可以使系统的资源分配的更为公平 renice 已存在进程的 nice 重新调整 [rootstudy ~]# renice [number] PID 选项与参数 PID 某个进程的 ID 啊# 范例一找出自己的 bash PID 并将该 PID 的 nice 调整到 -5 [rootstudy ~]# ps -l F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD 4 S 0 14836 14835 0 90 10 - 29068 wait pts/0 00:00:00 bash 0 R 0 19900 14836 0 90 10 - 30319 - pts/0 00:00:00 ps [rootstudy ~]# renice -5 14836 14836 (process ID) old priority 10, new priority -5 [rootstudy ~]# ps -l F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD 4 S 0 14836 14835 0 75 -5 - 29068 wait pts/0 00:00:00 bash 0 R 0 19910 14836 0 75 -5 - 30319 - pts/0 00:00:00 ps由上面这个范例当中我们也看的出来虽然修改的是 bash 那个进程但是该进程所触发的 ps 指令当中的 nice 也会继承而为 -5 喔了解了吧整个 nice 值是可以在父进程 -- 子进程之间传递的呢 另外除了 renice 之外其实那个 top 同样的也是可以调整 nice 值的 31.3 系统资源的观察 除了系统的进程之外我们还必须就系统的一些资源进行检查啊举例来说我们使用 top 可以看到很多系统的资源对吧那么还有没有其他的工具可以查阅的 当然有啊底下这些工具指令可以玩一玩 free 观察内存使用情况 [rootstudy ~]# free [-b|-k|-m|-g|-h] [-t] [-s N -c N] 选项与参数 -b 直接输入 free 时显示的单位是 Kbytes我们可以使用 b(bytes), m(Mbytes)k(Kbytes), 及 g(Gbytes) 来显示单位喔也可以直接让系统自己指定单位 (-h) -t 在输出的最终结果显示物理内存与 swap 的总量。 -s n可以让系统每几秒钟输出一次不间断的一直输出的意思对于系统观察挺有效 -c n与 -s 同时处理让 free 列出几次的意思# 范例一显示目前系统的内存容量 [rootstudy ~]# free -mtotal used free shared buff/cache available Mem: 2848 346 1794 8 706 2263 Swap: 1023 0 1023Mem 那一行显示的是物理内存的量 Swap 则是内存置换空间的量。 total 是总量 used 是已被使用的量 free 则是剩余可用的量。 后面的shared/buffers/cached 则是在已被使用的量当中用来作为缓冲及快取的量这些 shared/buffers/cached 的用量中在系统比较忙碌时可以被释出而继续利用因此后面就有一个 available (可用的) 数值。 请看上头范例一的输出我们可以发现这部测试机根本没有什么特别的服务但是竟然有 706MB 左右的 cache 耶 因为鸟哥在测试过程中还是有读/写/执行很多的文件嘛这些文件就会被系统暂时快取下来等待下次运作时可以更快速的取出之意 也就是说系统是『很有效率的将所有的内存用光光』目的是为了让系统的存取效能加速啦 很多朋友都会问到这个问题『我的系统明明很轻松为何内存会被用光光』现在瞭了吧 被用光是正常的而需要注意的反而是 swap 的量。一般来说 swap 最好不要被使用尤其 swap 最好不要被使用超过 20% 以上 如果您发现 swap 的用量超过 20% 那么最好还是买物理内存来插吧 因为 Swap 的效能跟物理内存实在差很多而系统会使用到 swap 绝对是因为物理内存不足了才会这样做的如此了解吧 Linux 系统为了要加速系统效能所以会将最常使用到的或者是最近使用到的文件数据快取 (cache) 下来 这样未来系统要使用该文件时就直接由内存中搜寻取出而不需要重新读取硬盘速度上面当然就加快了 因此物理内存被用光是正常的喔 uname查阅系统与核心相关信息 [rootstudy ~]# uname [-asrmpi] 选项与参数 -a 所有系统相关的信息包括底下的数据都会被列出来 -s 系统核心名称 -r 核心的版本 -m 本系统的硬件名称例如 i686 或 x86_64 等 -p CPU 的类型与 -m 类似只是显示的是 CPU 的类型 -i 硬件的平台 (ix86)# 范例一输出系统的基本信息 [rootnode-135 ~]# uname -a Linux node-135 3.10.0-1160.92.1.el7.x86_64 #1 SMP Tue Jun 20 11:48:01 UTC 2023 x86_64 x86_64 x86_64 GNU/Linux [rootnode-135 ~]# uname -s Linux [rootnode-135 ~]# uname -r 3.10.0-1160.92.1.el7.x86_64 [rootnode-135 ~]# uname -m x86_64 [rootnode-135 ~]# uname -p x86_64 [rootnode-135 ~]# uname -i x86_64这个咚咚我们前面使用过很多次了喔uname 可以列出目前系统的核心版本、 主要硬件平台以及CPU 类型等等的信息。以上面范例一的状态来说我的 Linux 主机使用的核心名称为 Linux而主机名为 study.centos.vbird核心的版本为 3.10.0-1160.92.1.el7.x86_64 该核心版本建立的日期为 2023-6-20适用的硬件平台为 x86_64 以上等级的硬件平台喔。 uptime观察系统启动时间与工作负载 这个指令很单纯呢就是显示出目前系统已经开机多久的时间以及 1, 5, 15 分钟的平均负载就是了。还记得 top 吧没错啦这个 uptime 可以显示出 top 画面的最上面一行 [rootstudy ~]# uptime 02:35:27 up 7:48, 3 users, load average: 0.00, 0.01, 0.05 # top 这个指令已经谈过相关信息不再聊netstat 追踪网络或插槽文件 这个 netstat 也是挺好玩的其实这个指令比较常被用在网络的监控方面不过在进程管理方面也是需要了解的啦 这个指令的执行如下所示基本上 netstat 的输出分为两大部分分别是网络与系统自己的进程相关性部分 [rootstudy ~]# netstat -[atunlp] 选项与参数 -a 将目前系统上所有的联机、监听、Socket 数据都列出来 -t 列出 tcp 网络封包的数据 -u 列出 udp 网络封包的数据 -n 不以进程的服务名称以埠号 (port number) 来显示 -l 列出目前正在网络监听 (listen) 的服务 -p 列出该网络服务的进程 PID# 范例一列出目前系统已经建立的网络联机与 unix socket 状态 [rootstudy ~]# netstat Active Internet connections (w/o servers) 与网络较相关的部分 Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 0 172.16.15.100:ssh 172.16.220.234:48300 ESTABLISHED Active UNIX domain sockets (w/o servers) 与本机的进程自己的相关性(非网络) Proto RefCnt Flags Type State I-Node Path unix 2 [ ] DGRAM 1902 /org/freedesktop/systemd1/notify unix 2 [ ] DGRAM 1944 /run/systemd/shutdownd ....(中间省略).... unix 3 [ ] STREAM CONNECTED 25425 /tmp/.X11-unix/X0 unix 3 [ ] STREAM CONNECTED 28893 unix 3 [ ] STREAM CONNECTED 21262在上面的结果当中显示了两个部分分别是网络的联机以及 linux 上面的 socket 进程相关性部分。我们先来看看因特网联机情况的部分 Proto 网络的封包协议主要分为 TCP 与 UDP 封包相关资料请参考服务器篇Recv-Q非由用户程序链接到此 socket 的复制的总 bytes 数Send-Q非由远程主机传送过来的 acknowledged 总 bytes 数Local Address 本地端的 IP:port 情况Foreign Address远程主机的 IP:port 情况State 联机状态主要有建立(ESTABLISED)及监听(LISTEN) 我们看上面仅有一条联机的数据他的意义是『透过 TCP 封包的联机远程的 172.16.220.234:48300 联机到本地端的 172.16.15.100:ssh 这条联机状态是建立 (ESTABLISHED) 的状态』 本机进程通信 除了网络上的联机之外其实 Linux 系统上面的进程是可以接收不同进程所发送来的信息那就是Linux 上头的插槽档 (socket file)。socket file 可以沟通两个进程之间的信息因此进程可以取得对方传送过来的资料。 由于有 socket file因此类似 X Window 这种需要透过网络连接的软件目前新版的 distributions 就以 socket 来进行窗口接口的联机沟通了。上表中 socket file 的输出字段有 Proto 一般就是 unix 啦RefCnt连接到此 socket 的进程数量Flags 联机的旗标Type socket 存取的类型。主要有确认联机的 STREAM 与不需确认的 DGRAM 两种State 若为 CONNECTED 表示多个进程之间已经联机建立。Path 连接到此 socket 的相关程序的路径或者是相关数据输出的路径。 以上表的输出为例最后那三行在 /tmp/.xx 底下的数据就是 X Window 窗口接口的相关进程啦而 PATH 指向的就是这些进程要交换数据的插槽文件啰好那么 netstat 可以帮我们进行什么任务呢 很多喔我们先来看看利用 netstat 去看看我们的哪些进程有启动哪些网络的『后门』呢 # 范例二找出目前系统上已在监听的网络联机及其 PID [rootstudy ~]# netstat -tulnp Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1326/sshd tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 2349/master tcp6 0 0 :::22 :::* LISTEN 1326/sshd tcp6 0 0 ::1:25 :::* LISTEN 2349/master udp 0 0 0.0.0.0:123 0.0.0.0:* 751/chronyd udp 0 0 127.0.0.1:323 0.0.0.0:* 751/chronyd udp 0 0 0.0.0.0:57808 0.0.0.0:* 743/avahi-daemon: r udp 0 0 0.0.0.0:5353 0.0.0.0:* 743/avahi-daemon: r udp6 0 0 :::123 :::* 751/chronyd udp6 0 0 ::1:323 :::* 751/chronyd # 除了可以列出监听网络的接口与状态之外最后一个字段还能够显示此服务的 # PID 号码以及进程的指令名称喔例如上头的 1326 就是该 PID# 范例三将上述的 0.0.0.0:57808 那个网络服务关闭的话 [rootstudy ~]# kill -9 743 [rootstudy ~]# killall -9 avahi-daemon很多朋友常常有疑问那就是我的主机目前到底开了几个门(ports)其实不论主机提供什么样的服务 一定必须要有相对应的 program 在主机上面执行才行啊举例来说我们鸟园的 Linux 主机提供的就是 WWW 服务那么我的主机当然有一个程序在提供 WWW 的服务啊那就是 Apache 这个软件所提供的啦^_^。 所以当我执行了这个程序之后我的系统自然就可以提供 WWW 的服务了。那如何关闭啊 就关掉该程序所触发的那个进程就好了例如上面的范例三所提供的例子啊不过这个是非正规的作法喔 正规的作法请查阅下一章的说明呦 dmesg 分析核心产生的讯息 系统在开机的时候核心会去侦测系统的硬件你的某些硬件到底有没有被捉到那就与这个时候的侦测有关。 但是这些侦测的过程要不是没有显示在屏幕上就是很飞快的在屏幕上一闪而逝能不能把核心侦测的讯息捉出来瞧瞧 可以的那就使用 dmesg 吧 所有核心侦测的讯息不管是开机时候还是系统运作过程中反正只要是核心产生的讯息都会被记录到内存中的某个保护区段。 dmesg 这个指令就能够将该区段的讯息读出来的因为讯息实在太多了所以执行时可以加入这个管线指令『 | more 』来使画面暂停 # 范例一输出所有的核心开机时的信息 [rootstudy ~]# dmesg | more# 范例二搜寻开机的时候硬盘的相关信息为何 [rootstudy ~]# dmesg | grep -i vda [ 0.758551] vda: vda1 vda2 vda3 vda4 vda5 vda6 vda7 vda8 vda9 [ 3.964134] XFS (vda2): Mounting V4 Filesystem ....(底下省略)....由范例二就知道我这部主机的硬盘的格式是什么了吧 vmstat 侦测系统资源变化 如果你想要动态的了解一下系统资源的运作那么这个 vmstat 确实可以玩一玩vmstat 可以侦测『 CPU / 内存 / 磁盘输入输出状态 』等等如果你想要了解一部繁忙的系统到底是哪个环节最累人 可以使用 vmstat 分析看看。底下是常见的选项与参数说明 [rootstudy ~]# vmstat [-a] [延迟 [总计侦测次数]] CPU/内存等信息 [rootstudy ~]# vmstat [-fs] 内存相关 [rootstudy ~]# vmstat [-S 单位] 设定显示数据的单位 [rootstudy ~]# vmstat [-d] 与磁盘有关 [rootstudy ~]# vmstat [-p 分区槽] 与磁盘有关 选项与参数 -a 使用 inactive/active(活跃与否) 取代 buffer/cache 的内存输出信息 -f 开机到目前为止系统复制 (fork) 的进程数 -s 将一些事件 (开机至目前为止) 导致的内存变化情况列表说明 -S 后面可以接单位让显示的数据有单位。例如 K/M 取代 bytes 的容量 -d 列出磁盘的读写总量统计表 -p 后面列出分区槽可显示该分区槽的读写总量统计表# 范例一统计目前主机 CPU 状态每秒一次共计三次 [rootstudy ~]# vmstat 1 3 procs ------------memory---------- ---swap-- -----io---- -system-- ------cpu----- r b swpd free buff cache si so bi bo in cs us sy id wa st 1 0 0 1838092 1504 722216 0 0 4 1 6 9 0 0 100 0 0 0 0 0 1838092 1504 722200 0 0 0 0 13 23 0 0 100 0 0 0 0 0 1838092 1504 722200 0 0 0 0 25 46 0 0 100 0 0利用 vmstat 甚至可以进行追踪喔你可以使用类似『 vmstat 5 』代表每五秒钟更新一次且无穷的更新直到你按下 [ctrl]-c 为止。如果你想要实时的知道系统资源的运作状态这个指令就不能不知道那么上面的表格各项字段的意义为何 基本说明如下 进程字段 (procs) 的项目分别为 r 等待运作中的进程数量 b不可被唤醒的进程数量。 这两个项目越多代表系统越忙碌 (因为系统太忙所以很多进程就无法被执行或一直在等待而无法被唤醒之故)。 内存字段 (memory) 项目分别为 swpd虚拟内存被使用的容量 free未被使用的内存容量 buff用于缓冲存储器 cache用于高速缓存。 这部份则与 free 是相同的。 内存置换空间 (swap) 的项目分别为 si由磁盘中将进程取出的量 so由于内存不足而将没用到的进程写入到磁盘的 swap 的容量。 如果 si/so 的数值太大表示内存内的数据常常得在磁盘与主存储器之间传来传去系统效能会很差 磁盘读写 (io) 的项目分别为 bi由磁盘读入的区块数量 bo写入到磁盘去的区块数量。 如果这部份的值越高代表系统的 I/O 非常忙碌 系统 (system) 的项目分别为 in每秒被中断的进程次数 cs每秒钟进行的事件切换次数 这两个数值越大代表系统与接口设备的沟通非常频繁 这些接口设备当然包括磁盘、网络卡、时间钟等。 CPU 的项目分别为 us非核心层的 CPU 使用状态sy核心层所使用的 CPU 状态id闲置的状态wa等待 I/O 所耗费的 CPU 状态st被虚拟机 (virtual machine) 所盗用的 CPU 使用状态 (2.6.11 以后才支持)。 由于鸟哥的机器是测试机所以并没有什么 I/O 或者是 CPU 忙碌的情况。如果改天你的服务器非常忙碌时记得使用 vmstat 去看看到底是哪个部分的资源被使用的最为频繁一般来说如果 I/O 部分很忙碌的话你的系统会变的非常慢 让我们再来看看那么磁盘的部分该如何观察 # 范例二系统上面所有的磁盘的读写状态 [rootstudy ~]# vmstat -d disk- ------------reads------------ ------------writes----------- -----IO------total merged sectors ms total merged sectors ms cur sec vda 21928 0 992587 47490 7239 2225 258449 13331 0 26 sda 395 1 3168 213 0 0 0 0 0 0 sr0 0 0 0 0 0 0 0 0 0 0 dm-0 19139 0 949575 44608 7672 0 202251 16264 0 25 dm-1 336 0 2688 327 0 0 0 0 0 0 md0 212 0 1221 0 14 0 4306 0 0 0 dm-2 218 0 9922 565 54 0 4672 128 0 0 dm-3 179 0 957 182 11 0 4306 68 0 031.4 特殊文件与进程 我们在前面曾经谈到特殊权限的 SUID/SGID/SBIT 虽然已经将这三种特殊权限作了详细的解释不过我们依旧要来探讨的是那么到底这些权限对于你的『进程』是如何影响的 此外进程可能会使用到系统资源举例来说磁盘就是其中一项资源。哪天你在 umount 磁盘时系统老是出现『 device is busy 』的字样到底是怎么回事啊我们底下就来谈一谈这些和进程有关系的细节部分 具有 SUID/SGID 权限的指令执行状态 SUID 的权限其实与进程的相关性非常的大为什么呢先来看看 SUID 的程序是如何被一般用户执行且具有什么特色呢 SUID 权限仅对二进制程序(binary program)有效执行者对于该程序需要具有 x 的可执行权限本权限仅在执行该程序的过程中有效 (run-time)执行者将具有该程序拥有者 (owner) 的权限。 所以说整个 SUID 的权限会生效是由于『具有该权限的程序被触发』而我们知道一个程序被触发会变成进程 所以啰执行者可以具有程序拥有者的权限就是在该程序变成进程的那个时候啦或许那时候会觉得很奇怪为啥执行了 passwd 后你就具有 root 的权限呢不都是一般使用者执行的吗 这是因为你在触发 passwd 后会取得一个新的进程与 PID该 PID 产生时透过 SUID 来给予该 PID 特殊的权限设定啦 我们使用 dmtsai 登入系统且执行 passwd 后透过工作控制来理解一下 [dmtsaistudy ~]$ passwd Changing password for user dmtsai. Changing password for dmtsai (current) UNIX password: 这里按下 [ctrl]-z 并且按下 [enter] [1] Stopped passwd [dmtsaistudy ~]$ pstree -uA systemd--ModemManager---2*[{ModemManager}] ....(中间省略)....|-sshd---sshd---sshd(dmtsai)---bash--passwd(root)| -pstree ....(底下省略)....从上表的结果我们可以发现底线的部分sshd(dmtsai)---bash -pstree是属于 dmtsai 这个一般账号的权限特殊字体passwd(root)的则是 root 的权限 但你看到了 passwd 确实是由 bash 衍生出来的!不过就是权限不一样透过这样的解 析 你也会比较清楚为何不同程序所产生的权限不同了吧这是由于『SUID 程序运作过程中产生的进程』的关系啦 那么既然 SUID/SGID 的权限是比较可怕的您该如何查询整个系统的 SUID/SGID 的文件呢 应该是还不会忘记吧使用 find 即可啊 find / -perm /6000/proc/* 代表的意义 其实我们之前提到的所谓的进程都是在内存当中嘛而内存当中的数据又都是写入到 /proc/* 这个目录下的所以啰我们当然可以直接观察 /proc 这个目录当中的文件啊 如果你观察过 /proc 这个目录的话应该会发现他有点像这样 [rootstudy ~]# ll /proc dr-xr-xr-x. 8 root root 0 Aug 4 18:46 1 dr-xr-xr-x. 8 root root 0 Aug 4 18:46 10 dr-xr-xr-x. 8 root root 0 Aug 4 18:47 10548 ....(中间省略).... -r--r--r--. 1 root root 0 Aug 5 17:48 uptime -r--r--r--. 1 root root 0 Aug 5 17:48 version -r--------. 1 root root 0 Aug 5 17:48 vmallocinfo -r--r--r--. 1 root root 0 Aug 5 17:48 vmstat -r--r--r--. 1 root root 0 Aug 5 17:48 zoneinfo基本上目前主机上面的各个进程的 PID 都是以目录的型态存在于 /proc 当中。 举例来说我们开机所执行的第一支程序 systemd 他的 PID 是 1 这个 PID 的所有相关信息都写入在 /proc/1/* 当中若我们直接观察 PID 为 1 的数据好了他有点像这样 [rootstudy ~]# ll /proc/1 dr-xr-xr-x. 2 root root 0 Aug 4 19:25 attr -rw-r--r--. 1 root root 0 Aug 4 19:25 autogroup -r--------. 1 root root 0 Aug 4 19:25 auxv -r--r--r--. 1 root root 0 Aug 4 18:46 cgroup --w-------. 1 root root 0 Aug 4 19:25 clear_refs -r--r--r--. 1 root root 0 Aug 4 18:46 cmdline 就是指令串 -r--------. 1 root root 0 Aug 4 18:46 environ 一些环境变量 lrwxrwxrwx. 1 root root 0 Aug 4 18:46 exe ....(以下省略)....里面的数据还挺多的不过比较有趣的其实是两个文件分别是 cmdline这个进程被启动的指令串environ这个进程的环境变量内容。 [rootstudy ~]# cat /proc/1/cmdline /usr/lib/systemd/systemd--switched-root--system--deserialize24就是这个指令、选项与参数启动 systemd 的啦这还是跟某个特定的 PID 有关的内容呢如果是针对整个 Linux 系统相关的参数呢那就是在 /proc 目录底下的文件啦相关的文件与对应的内容是这样的 檔名文件内容/proc/cmdline加载 kernel 时所下达的相关指令与参数查阅此文件可了解指令是如何启动的/proc/cpuinfo本机的 CPU 的相关信息包含频率、类型与运算功能等/proc/devices这个文件记录了系统各个主要装置的主要装置代号与 mknod 有关呢/proc/filesystems目前系统已经加载的文件系统啰/proc/interrupts目前系统上面的 IRQ 分配状态。/proc/ioports目前系统上面各个装置所配置的 I/O 地址。/proc/kcore这个就是内存的大小啦好大对吧但是不要读他啦/proc/loadavg还记得 top 以及 uptime 吧没错上头的三个平均数值就是记录在此/proc/meminfo使用 free 列出的内存信息嘿嘿在这里也能够查阅到/proc/modules目前我们的 Linux 已经加载的模块列表也可以想成是驱动程序啦/proc/mounts系统已经挂载的数据就是用 mount 这个指令呼叫出来的数据啦/proc/swaps到底系统挂加载的内存在哪里呵呵使用掉的 partition 就记录在此啦/proc/partitions使用 fdisk -l 会出现目前所有的 partition 吧在这个文件当中也有纪录喔/proc/uptime就是用 uptime 的时候会出现的信息啦/proc/version核心的版本就是用 uname -a 显示的内容啦/proc/bus/*一些总线的装置还有 USB 的装置也记录在此喔 其实上面这些文件鸟哥在此建议您可以使用 cat 去查阅看看不必深入了解 不过观看过文件内容后毕竟会比较有感觉啦如果未来您想要自行撰写某些工具软件 那么这个目录底下的相关文件可能会对您有点帮助的喔 查询已开启文件或已执行进程开启之文件 其实还有一些与进程相关的指令可以值得参考与应用的我们来谈一谈 fuser藉由文件(或文件系统)找出正在使用该文件的进程 有的时候我想要知道我的进程到底在这次启动过程中开启了多少文件可以利用 fuser 来观察啦举例来说你如果卸除时发现系统通知『 device is busy 』那表示这个文件系统正在忙碌中 表示有某支进程有利用到该文件系统啦那么你就可以利用 fuser 来追踪啰fuser 语法有点像这样 [rootstudy ~]# fuser [-umv] [-k [i] [-signal]] file/dir 选项与参数 -u 除了进程的 PID 之外同时列出该进程的拥有者 -m 后面接的那个档名会主动的上提到该文件系统的最顶层对 umount 不成功很有效 -v 可以列出每个文件与进程还有指令的完整相关性 -k 找出使用该文件/目录的 PID 并试图以 SIGKILL 这个讯号给予该 PID -i 必须与 -k 配合在删除 PID 之前会先询问使用者意愿 -signal例如 -1 -15 等等若不加的话预设是 SIGKILL (-9) 啰# 范例一找出目前所在目录的使用 PID/所属账号/权限 为何 [rootstudy ~]# fuser -uv .USER PID ACCESS COMMAND /root: root 13888 ..c.. (root)bashroot 31743 ..c.. (root)bash看到输出的结果没他说『.』底下有两个 PID 分别为 13888, 31743 的进程该进程属于 root 且指令为 bash 。 比较有趣的是那个 ACCESS 的项目那个项目代表的意义为 c 此进程在当前的目录下(非次目录)e 可被触发为执行状态f 是一个被开启的文件r 代表顶层目录 (root directory)F 该文件被开启了不过在等待回应中m 可能为分享的动态函式库 那如果你想要查阅某个文件系统底下有多少进程正在占用该文件系统时那个 -m 的选项就很有帮助了让我们来做几个简单的测试包括实体的文件系统挂载与 /proc 这个虚拟文件系统的内容看看有多少的进程对这些挂载点或其他目录的使用状态吧 # 范例二找到所有使用到 /proc 这个文件系统的进程吧 [rootstudy ~]# fuser -uv /proc /proc: root kernel mount (root)/procrtkit 768 .rc.. (rtkit)rtkit-daemon # 数据量还不会很多虽然这个目录很繁忙没关系我们可以继续这样作看看其他的进程 [rootstudy ~]# fuser -mvu /procUSER PID ACCESS COMMAND /proc: root kernel mount (root)/procroot 1 f.... (root)systemdroot 2 ...e. (root)kthreadd .....(底下省略)..... # 有这几支进程在进行 /proc 文件系统的存取喔这样清楚了吗# 范例三找到所有使用到 /home 这个文件系统的进程吧 [rootstudy ~]# echo $$ 31743 # 先确认一下自己的 bash PID 号码吧 [rootstudy ~]# cd /home [rootstudy home]# fuser -muv .USER PID ACCESS COMMAND /home: root kernel mount (root)/homedmtsai 31535 ..c.. (dmtsai)bashroot 31571 ..c.. (root)passwdroot 31737 ..c.. (root)sudoroot 31743 ..c.. (root)bash # 果然自己的 PID 在啊 [rootstudy home]# cd ~ [rootstudy ~]# umount /home umount: /home: target is busy.(In some cases useful info about processes that usethe device is found by lsof(8) or fuser(1)) # 从 fuser 的结果可以知道总共有五只 process 在该目录下运作那即使 root 离开了 /home # 当然还是无法 umount 的那要怎办哈哈可以透过如下方法一个一个删除 [rootstudy ~]# fuser -mki /home /home: 31535c 31571c 31737c # 你会发现 PID 跟上面查到的相同 Kill process 31535 ? (y/N) # 这里会问你要不要删除当然不要乱删除啦通通取消既然可以针对整个文件系统那么能不能仅针对单一文件啊当然可以啰看一下底下的案例先 # 范例四找到 /run 底下属于 FIFO 类型的文件并且找出存取该文件的进程 [rootstudy ~]# find /run -type p .....(前面省略)..... /run/systemd/sessions/165.ref /run/systemd/sessions/1.ref /run/systemd/sessions/c1.ref # 随便抓个项目就是这个好了来测试一下 [rootstudy ~]# fuser -uv /run/systemd/sessions/c1.refUSER PID ACCESS COMMAND /run/systemd/sessions/c1.ref:root 763 f.... (root)systemd-logindroot 5450 F.... (root)gdm-session-wor # 通常系统的 FIFO 文件都会放置到 /run 底下透过这个方式来追踪该文件被存取的 process # 也能够晓得系统有多忙碌啊呵呵如何很有趣的一个指令吧透过这个 fuser 我们可以找出使用该文件、目录的进程藉以观察的啦他的重点与 ps, pstree 不同。 fuser 可以让我们了解到某个文件 (或文件系统) 目前正在被哪些进程所利用 lsof 列出被进程所开启的文件档名 相对于 fuser 是由文件或者装置去找出使用该文件或装置的进程反过来说如何查出某个进程开启或者使用的文件与装置呢呼呼那就是使用 lsof 啰 [rootstudy ~]# lsof [-aUu] [d] 选项与参数 -a 多项数据需要『同时成立』才显示出结果时 -U 仅列出 Unix like 系统的 socket 文件类型 -u 后面接 username列出该使用者相关进程所开启的文件 d 后面接目录亦即找出某个目录底下已经被开启的文件# 范例一列出目前系统上面所有已经被开启的文件与装置 [rootstudy ~]# lsof COMMAND PID TID USER FD TYPE DEVICE SIZE/OFF NODE NAME systemd 1 root cwd DIR 253,0 4096 128 / systemd 1 root rtd DIR 253,0 4096 128 / systemd 1 root txt REG 253,0 1230920 967763 /usr/lib/systemd/systemd ....(底下省略).... # 注意到了吗是的在预设的情况下 lsof 会将目前系统上面已经开启的 # 文件全部列出来所以画面多的吓人啊您可以注意到第一个文件 systemd 执行的 # 地方就在根目录而根目录嘿嘿所在的 inode 也有显示出来喔# 范例二仅列出关于 root 的所有进程开启的 socket 文件 [rootstudy ~]# lsof -u root -a -U COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME systemd 1 root 3u unix 0xffff8800b7756580 0t0 13715 socket systemd 1 root 7u unix 0xffff8800b7755a40 0t0 1902 /org/freedesktop/systemd1/notify systemd 1 root 9u unix 0xffff8800b7756d00 0t0 1903 /run/systemd/private .....(中间省略)..... Xorg 4496 root 1u unix 0xffff8800ab107480 0t0 25981 /tmp/.X11-unix/X0 Xorg 4496 root 3u unix 0xffff8800ab107840 0t0 25982 /tmp/.X11-unix/X0 Xorg 4496 root 16u unix 0xffff8800b7754f00 0t0 25174 /tmp/.X11-unix/X0 .....(底下省略)..... # 注意到那个 -a 吧如果你分别输入 lsof -u root 及 lsof -U 会有啥信息 # 使用 lsof -u root -U 及 lsof -u root -a -U 呵呵都不同啦 # -a 的用途就是在解决同时需要两个项目都成立时啊 ^_^# 范例三请列出目前系统上面所有的被启动的周边装置 [rootstudy ~]# lsof d /dev COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME systemd 1 root 0u CHR 1,3 0t0 1028 /dev/null systemd 1 root 1u CHR 1,3 0t0 1028 /dev/null # 看吧因为装置都在 /dev 里面嘛所以啰使用搜寻目录即可啊# 范例四秀出属于 root 的 bash 这支程序所开启的文件 [rootstudy ~]# lsof -u root | grep bash ksmtuned 781 root txt REG 253,0 960384 33867220 /usr/bin/bash bash 13888 root cwd DIR 253,0 4096 50331777 /root bash 13888 root rtd DIR 253,0 4096 128 / bash 13888 root txt REG 253,0 960384 33867220 /usr/bin/bash bash 13888 root mem REG 253,0 106065056 17331169 /usr/lib/locale/locale-archive ....(底下省略)....这个指令可以找出您想要知道的某个进程是否有启用哪些信息例如上头提到的范例四的执行结果呢 pidof 找出某支正在执行的程序的 PID [rootstudy ~]# pidof [-sx] program_name 选项与参数 -s 仅列出一个 PID 而不列出所有的 PID -x 同时列出该 program name 可能的 PPID 那个进程的 PID# 范例一列出目前系统上面 systemd 以及 rsyslogd 这两个程序的 PID [rootstudy ~]# pidof systemd rsyslogd 1 742 # 理论上应该会有两个 PID 才对。上面的显示也是出现了两个 PID 喔。 # 分别是 systemd 及 rsyslogd 这两支程序的 PID 啦。很简单的用法吧透过这个 pidof 指令并且配合 ps aux 与正规表示法就可以很轻易的找到您所想要的进程内容了呢。 如果要找的是 bash 那就 pidof bash 立刻列出一堆 PID 号码了 [rootnode-135 ~]# ps aux | grep pidof rsyslogd root 963 0.0 0.3 239124 6084 ? Ssl Aug10 1:01 /usr/sbin/rsyslogd -n该系列目录 -- 【BASH】回顾与知识点梳理目录
http://www.pierceye.com/news/51600/

相关文章:

  • 购物网站流量怎么做关键词排名点击软件怎样
  • 长春seo网站优化微信公众平台开发者文档
  • 商城网站开发与设计做土豆的视频在线观看网站
  • 有没有专门做帽子的网站青海风控平台app下载
  • 用外国人的照片做网站深圳婚庆网站建设
  • 网站建设的流程 步骤软件技术属于什么学类
  • 分类信息网站平台的推广采购网站模板
  • 哈尔滨速成网站建设专业设计网站排名
  • 漯河英文网站建设机械加工网站平台
  • 网站开发要学习路线软件开发流程和规范
  • 如何验证网站h5开发网站优点
  • 姜堰网网站做湲网站
  • 微信小程序商城源码绍兴seo推广
  • wordpress程序重装wordpress数据库优化插件
  • 最好的淘宝客网站陕西一建考试最新消息
  • saas电商建站系统佛山外贸网站建设方案
  • 济南 手机网站制作合肥网络推广平台
  • 装修设计图网站排名电子商务平台在家能干吗
  • 建设工程方面的资料在哪个网站下载比较方便专业建设网站企业
  • 开平市网站建设互联网营销师证书好考吗
  • 网站建设哪家最好用电商网站建设c微fzsszai
  • 网站做我女朋友北京seo代理商
  • 没有数据库的网站保定网站建设平台分析
  • 网站建设公司巨头网站做seo需要些什么
  • 网站对比app还有优势吗郑州企业服务公司
  • dede 网站名称织梦网站排行榜
  • 猪八戒网可以做网站吗黑龙江建设网官网住房和城乡厅官网
  • 赣州网站优化制作wordpress myqaptcha
  • 农业公司怎样建立网站网站域名被重定向
  • 电子商务网站规划与建设摘要泉州wap网站制作