记录:320
场景:在CentOS 7.9操作系统上,ps命令是查看进程信息工具。查看进程状态、进程使用内存状况、进程使用CPU状况、进程PID等。
版本:
操作系统:CentOS 7.9
1.ps命令介绍
ps命令,process status的简称。一个查看进程信息工具。可以查看启动哪些进程、进程运行的状态、进程占用资源情况等。收集这些信息有助于监测和控制进程。比如,写自动化脚本时,根据进程信息决定下一步执行动作。
ps命令,查看进程执行瞬间的进程信息工具。查看进程状态、进程使用内存状况、进程使用CPU状况、进程PID等。
top命令,查看进程实时动态信息工具。查看进程状态、进程使用内存状况、进程使用CPU状况、进程PID等。
僵尸进程,一个进程使用fork创建子进程,如果子进程退出,而父进程并没有调用wait或waitpid获取子进程的状态信息,那么子进程的进程描述符仍然保存在系统中。这种进程称为僵尸进程。
2.ps常用命令
(1)ps帮助命令
命令:ps --help a
功能:查看ps支持的全部命令和选项,在实际工作中,查看这个手册应该是必备之选。
(2)查看当前会话中打开进程
命令:ps
功能:查看当前会话打开的进程,实际上就是ps进程和bash进程。因为ps是使用bash的shell脚本,因此也有bash进程。
(3)查看全部进程
命令:ps -e
命令:ps -A
功能:-e,-A,查看全部进程。打印字段:PID、TTY、TIME、CMD信息。一般使用-e。
(4)查看全部进程且完整格式,包括命令行
命令:ps -ef
功能:-f完整格式,包括命令行。打印字段:UID、PID、PPID、C、STIME、TTY、TIME、CMD。
(5)查看全部进程搜索指定内容
命令:ps -ef | grep java
功能:在ps -ef列出的内容中,使用grep命令搜索含有关键字java的进程,实际一般这样组合使用。注意,使用搜索后,不显示字段名称了。
(6)查看全部进程显示完整信息
命令:ps -eF
功能:-F,显示完整信息,打印字段:UID、PID、PPID、C、SZ、RSS、PSR、STIME、TTY、TIME、CMD。如果想查看进程对内存和CPU使用情况,可以使用此命令。
(7)查看全部进程以用户维度输出信息
命令:ps aux
功能:a,打印全部有tty终端启动的进程。x,打印没有tty控制终端的进程。u,以用户为导向的格式输出。打印字段:USER、PID、%CPU、%MEM、VSZ、RSS、TTY、STAT、STATT、TIME、COMMAND。需要查看用户的进程的CPU、内存以及进程状态,可以使用这种方式
(8)查看全部进程以用户维度输出信息指定搜索
命令:ps aux | grep java
功能:查看全部进程以用户维度输出信息指定关键字搜索。
3.ps命令字段解析
执行ps命令后,打印信息的第一行是字段名称,即每一列代表的意思。
3.1常用字段
UID:进程的用户的ID号。
USER:启动进程的用户。
PID:进程的唯一ID。
PPID:进程的父进程的ID号。
C:进程的CPU处理器利用率。
TTY:启动进程的终端名称。表示该进程在哪个终端运行,不是从某个终端启动的进程或者与终端无关的进程显示为?号,查看终端名称可以使用:ll /dev/。
TIME:进程使用CPU的累计时间。
CMD/COMMAND:进程所运行的命令。
STIME/STATT:进程的启动时间。
%CPU:进程占用CPU的百分比
%MEM:进程占用内存的百分比(使用物理内存计算)。
VSZ:进程占用的虚拟内存大小(单位:KB)
RSS:进程占用的实际内存大小(单位:KB)
PSR:当前进程被调度到的CUP核序号。
SZ:进程在物理页面中的核心镜像的大小。
STAT:进程当前状态。
3.2字段STAT说明
STAT:进程当前状态。STAT字段每个字母代表意思。
R:running,运行或可运行状态。
S:interruptable sleeping,可中断睡眠(等待事件完成),正在睡眠的进程。
D:uninterruptable sleeping,不可中断的睡眠进程。
T:stopped,停止或被追踪的进程。
Z:zombie,僵死进程。
s:session leader,会话层状态。
N:低优先级进程。
<:高优先级进程。
+:前台进程。
l:多线程进程。(字母l)。
3.ps和其它几个命令
查看进程:ps -ef
查看CPU信息:cat /proc/cpuinfo
查看内信息:free -h
查看文件系统信息:df -h
查看目录和文件占用空间信息:du -h
查看磁盘挂载信息:lsblk
4.帮助命令列表
命令:ps --help a
查看ps 支持的全部命令和选项,在实际工作中,查看这个手册应该是必备之选。
Usage:
ps [options]
Basic options:
-A, -e all processes
-a all with tty, except session leaders
a all with tty, including other users
-d all except session leaders
-N, --deselect negate selection
r only running processes
T all processes on this terminal
x processes without controlling ttys
Selection by list:
-C <command> command name
-G, --Group <GID> real group id or name
-g, --group <group> session or effective group name
-p, p, --pid <PID> process id
--ppid <PID> parent process id
-q, q, --quick-pid <PID>
process id (quick mode)
-s, --sid <session> session id
-t, t, --tty <tty> terminal
-u, U, --user <UID> effective user id or name
-U, --User <UID> real user id or name
The selection options take as their argument either:
a comma-separated list e.g. '-u root,nobody' or
a blank-separated list e.g. '-p 123 4567'
Output formats:
-F extra full
-f full-format, including command lines
f, --forest ascii art process tree
-H show process hierarchy
-j jobs format
j BSD job control format
-l long format
l BSD long format
-M, Z add security data (for SELinux)
-O <format> preloaded with default columns
O <format> as -O, with BSD personality
-o, o, --format <format>
user-defined format
s signal format
u user-oriented format
v virtual memory format
X register format
-y do not show flags, show rss vs. addr (used with -l)
--context display security context (for SELinux)
--headers repeat header lines, one per page
--no-headers do not print header at all
--cols, --columns, --width <num>
set screen width
--rows, --lines <num>
set screen height
Show threads:
H as if they were processes
-L possibly with LWP and NLWP columns
-m, m after processes
-T possibly with SPID column
Miscellaneous options:
-c show scheduling class with -l option
c show true command name
e show the environment after command
k, --sort specify sort order as: [+|-]key[,[+|-]key[,...]]
L show format specifiers
n display numeric uid and wchan
S, --cumulative include some dead child process data
-y do not show flags, show rss (only with -l)
-V, V, --version display version information and exit
-w, w unlimited output width
--help <simple|list|output|threads|misc|all>
display help and exit
以上,感谢。
2022年11月18日
对于具有离线功能的智能手机应用程序,我正在为Xml文件创建单向文本同步。我希望我的服务器将增量/差异(例如GNU差异补丁)发送到目标设备。这是计划:Time=0Server:hasversion_1ofXmlfile(~800kiB)Client:hasversion_1ofXmlfile(~800kiB)Time=1Server:hasversion_1andversion_2ofXmlfile(each~800kiB)computesdeltaoftheseversions(=patch)(~10kiB)sendspatchtoClient(~10kiBtransferred)Cl
我想用ruby编写一个小的命令行实用程序并将其作为gem分发。我知道安装后,Guard、Sass和Thor等某些gem可以从命令行自行运行。为了让gem像二进制文件一样可用,我需要在我的gemspec中指定什么。 最佳答案 Gem::Specification.newdo|s|...s.executable='name_of_executable'...endhttp://docs.rubygems.org/read/chapter/20 关于ruby-在Ruby中编写命令行实用程序
我构建了两个需要相互通信和发送文件的Rails应用程序。例如,一个Rails应用程序会发送请求以查看其他应用程序数据库中的表。然后另一个应用程序将呈现该表的json并将其发回。我还希望一个应用程序将存储在其公共(public)目录中的文本文件发送到另一个应用程序的公共(public)目录。我从来没有做过这样的事情,所以我什至不知道从哪里开始。任何帮助,将不胜感激。谢谢! 最佳答案 无论Rails是什么,几乎所有Web应用程序都有您的要求,大多数现代Web应用程序都需要相互通信。但是有一个小小的理解需要你坚持下去,网站不应直接访问彼此
我尝试运行2.x应用程序。我使用rvm并为此应用程序设置其他版本的ruby:$rvmuseree-1.8.7-head我尝试运行服务器,然后出现很多错误:$script/serverNOTE:Gem.source_indexisdeprecated,useSpecification.Itwillberemovedonorafter2011-11-01.Gem.source_indexcalledfrom/Users/serg/rails_projects_terminal/work_proj/spohelp/config/../vendor/rails/railties/lib/r
在MRIRuby中我可以这样做:deftransferinternal_server=self.init_serverpid=forkdointernal_server.runend#Maketheserverprocessrunindependently.Process.detach(pid)internal_client=self.init_client#Dootherstuffwithconnectingtointernal_server...internal_client.post('somedata')ensure#KillserverProcess.kill('KILL',
刚入门rails,开始慢慢理解。有人可以解释或给我一些关于在application_controller中编码的好处或时间和原因的想法吗?有哪些用例。您如何为Rails应用程序使用应用程序Controller?我不想在那里放太多代码,因为据我了解,每个请求都会调用此Controller。这是真的? 最佳答案 ApplicationController实际上是您应用程序中的每个其他Controller都将从中继承的类(尽管这不是强制性的)。我同意不要用太多代码弄乱它并保持干净整洁的态度,尽管在某些情况下ApplicationContr
我正在编写一个gem,我必须在其中fork两个启动两个webrick服务器的进程。我想通过基类的类方法启动这个服务器,因为应该只有这两个服务器在运行,而不是多个。在运行时,我想调用这两个服务器上的一些方法来更改变量。我的问题是,我无法通过基类的类方法访问fork的实例变量。此外,我不能在我的基类中使用线程,因为在幕后我正在使用另一个不是线程安全的库。所以我必须将每个服务器派生到它自己的进程。我用类变量试过了,比如@@server。但是当我试图通过基类访问这个变量时,它是nil。我读到在Ruby中不可能在分支之间共享类变量,对吗?那么,还有其他解决办法吗?我考虑过使用单例,但我不确定这是
我是一个Rails初学者,但我想从我的RailsView(html.haml文件)中查看Ruby变量的内容。我试图在ruby中打印出变量(认为它会在终端中出现),但没有得到任何结果。有什么建议吗?我知道Rails调试器,但更喜欢使用inspect来打印我的变量。 最佳答案 您可以在View中使用puts方法将信息输出到服务器控制台。您应该能够在View中的任何位置使用Haml执行以下操作:-puts@my_variable.inspect 关于ruby-on-rails-如何在我的R
是否可以在应用程序中包含的gem代码中知道应用程序的Rails文件系统根目录?这是gem来源的示例:moduleMyGemdefself.included(base)putsRails.root#returnnilendendActionController::Base.send:include,MyGem谢谢,抱歉我的英语不好 最佳答案 我发现解决类似问题的解决方案是使用railtie初始化程序包含我的模块。所以,在你的/lib/mygem/railtie.rbmoduleMyGemclassRailtie使用此代码,您的模块将在
无论您是想搭建桌面端、WEB端或者移动端APP应用,HOOPSPlatform组件都可以为您提供弹性的3D集成架构,同时,由工业领域3D技术专家组成的HOOPS技术团队也能为您提供技术支持服务。如果您的客户期望有一种在多个平台(桌面/WEB/APP,而且某些客户端是“瘦”客户端)快速、方便地将数据接入到3D应用系统的解决方案,并且当访问数据时,在各个平台上的性能和用户体验保持一致,HOOPSPlatform将帮助您完成。利用HOOPSPlatform,您可以开发在任何环境下的3D基础应用架构。HOOPSPlatform可以帮您打造3D创新型产品,HOOPSSDK包含的技术有:快速且准确的CAD