分类 技术 下的文章

Linux是最有名的开源操作系统之一,它拥有着极其巨大的命令集。确定物理内存交换内存所有可用空间的最重要、也是唯一的方法是使用“free”命令。

Linux “free”命令可以给出类Linux/Unix操作系统中物理内存交换内存的总使用量、可用量及内核使用的缓冲区情况。

10 Linux Free Command Examples

这篇文章提供一些各种参数选项的“free”命令,这些命令对于你更好地利用你的内存会有帮助。

1. 显示你的系统内存

free命令用于检测物理内存交换内存已使用量和可用量(默认单位为KB)。下面演示命令的使用情况。

# free

             total       used       free     shared    buffers     cached
Mem:       1021628     912548     109080          0     120368     655548
-/+ buffers/cache:     136632     884996
Swap:      4194296          0    4194296

2. 以字节为单位显示内存

加上-b参数的free命令,以字节为单位显示内存的大小。

# free -b

             total       used       free     shared    buffers     cached
Mem:    1046147072  934420480  111726592          0  123256832  671281152
-/+ buffers/cache:  139882496  906264576
Swap:   4294959104          0 4294959104

3. 以千字节为单位显示内存

加上-k参数的free命令(默认单位,所以可以不用使用它),以(KB)千字节为单位显示内存大小。

# free -k

             total       used       free     shared    buffers     cached
Mem:       1021628     912520     109108          0     120368     655548
-/+ buffers/cache:     136604     885024
Swap:      4194296          0    4194296

4. 以兆字节为单位显示内存

想以(兆字节)显示内存大小,使用-m参数。

# free -m

             total       used       free     shared    buffers     cached
Mem:           997        891        106          0        117        640
-/+ buffers/cache:        133        864
Swap:         4095          0       4095

5. 以千兆字节为单位显示内存

使用-g为参数,将会以GB(千兆字节)为单位显示内存大小。

# free -g
             total       used       free     shared    buffers     cached
Mem:             0          0          0          0          0          0
-/+ buffers/cache:          0          0
Swap:            3          0          3

6. 显示总计行

加上-t选项,将会在屏幕最后列出总计一行。

# free -t

             total       used       free     shared    buffers     cached
Mem:       1021628     912520     109108          0     120368     655548
-/+ buffers/cache:     136604     885024
Swap:      4194296          0    4194296
Total: 5215924 912520 4303404

7. 关闭显示缓冲区调整一行

默认情况下,free命令是显示“缓冲区调整”一行的,为了关闭显示,可以加上-o参数。

# free -o                                                              

             total       used       free     shared    buffers     cached                                                                          
Mem:       1021628     912520     109108          0     120368     655548                                                                         
Swap:      4194296          0    4194296                               

8. 定期时间间隔更新内存状态

-s选项加上一个整数,用来在定期时间间隔内更新free命令。举个例子,下面的命令将会在每5秒更新一个free命令。

# free -s 5

             total       used       free     shared    buffers     cached
Mem:       1021628     912368     109260          0     120368     655548
-/+ buffers/cache:     136452     885176
Swap:      4194296          0    4194296

9. 显示底和高内存统计信息

-l选项显示了具体的高和低内存的使用统计情况。

# free -l

             total       used       free     shared    buffers     cached
Mem:       1021628     912368     109260          0     120368     655548
Low:        890036     789064     100972
High:       131592     123304       8288
-/+ buffers/cache:     136452     885176
Swap:      4194296          0    4194296

10. 检查free命令版本

-V选项,显示free命令版本信息。

# free -V

procps version 3.2.8

via: http://www.tecmint.com/check-memory-usage-in-linux/

作者:Ravi Saive 译者:su-kaiyao 校对:wxy

本文由 LCTT 原创翻译,Linux中> 国 荣誉推出

Linux Terminal Window.

Linux终端窗口

这是一个简短但是非常有用的教程:它向你展示从终端运行Linux应用程序的同时,如何保证终端仍然可以操作。

在Linux中有许多方式可以打开一个终端,这主要取决于你的发行版的选择和桌面环境。

使用Ubuntu的话,你可以使用CTRL + ALT + T组合键打开一个终端。你也可以点击超级键(Windows键)打开一个终端窗口。在键盘上,打开Ubuntu Dash,然后搜索"TERM"。点击"Term"图标将会打开一个终端窗口。

其他诸如XFCE, KDE, LXDE, Cinnamon和MATE的桌面环境,你将会在菜单中发现“终端”这个应用。还有一些发行版会把终端图标放在菜单项,或者在面板上放置终端启动器。

你可以在终端里面输入一个程序的名字来启动一个应用。举例,你可以通过输入"firefox"启动火狐浏览器。

从终端运行程序的好处是可以使用额外的选项。

举个例子,如果你输入下面的命令,一个新的火狐浏览器将会打开,而且默认的搜索引擎将会搜索引号之间的词语:

firefox -search "Linux.About.Com"

你会发现,如果你运行火狐浏览器,应用程序打开后,控制权将会回到终端(重新出现了命令提示符),这将意味着你可以继续在终端工作。

通常情况下,如果你通过终端运行一个程序,程序打开后,并且直到那个程序关闭结束,你都将不会获得终端的控制权。这是因为你是在前台打开程序的。

想要从终端运行一个程序,并且立即将终端的控制权返回给你,你需要以后台进程的方式打开程序。

为了以后台进程的方式打开一个程序,只需要添加符号(&)到命令中,如下面所示:

libreoffice &

在终端中仅仅提供程序的名字,应用程序可能运行不了。如果程序不存在于一个设置在PATH 环境变量的文件夹中,你需要指定完整的路径名来运行程序。

/path/to/yourprogram &

如果你并不确定一个程序是否存在于Linux文件系统中,使用find或者locate命令来查找该应用程序。

找一个文件的语法如下:

find /path/to/start/from -name programname

举个例子,可以使用下面的命令寻找Firefox的位置:

find / -name firefox

输出会很快滚动出很多,所以你可以以管道的方式控制输出的多少:

find / -name firefox | more
find / -name firefox | less

find命令将会返回因权限拒绝而发生错误的文件夹数量,这些文件夹你没有权限去搜索。

你可以使用sudo命令提升你的权限。如果sudo没有安装,你需要切换到拥有权限的用户:

sudo find / -name firefox | more

如果你知道你想寻找的文件在你的当前文件夹中,你可以一个点代替先前的斜线,如下:

sudo find . -name firefox | more

你可能不需要sudo来提升权限。如果你在home文件夹中寻找文件,sudo就不需要。

一些应用程序需要提升用户权限来运行,你可能得到一个缺少权限的错误,除非你使用一个具有足够权限的用户,或者使用sudo提升你的权限。

下面是一个小花招。如果你运行一个程序,而且它需要提升权限来运行,输入下面命令来提升权限重新执行:

sudo !!

via: http://linux.about.com/od/commands/fl/How-To-Run-Linux-Programs-From-The-Terminal-In-Background-Mode.htm

作者:Gary Newell 译者:su-kaiyao 校对:wxy

本文由 LCTT 原创翻译,Linux中国 荣誉推出

这周让我们继续学习如何使用Linux命令行管理和组织信息。在命令行中管理你的个人花费后,我建议你在命令行中管理你的笔记,特别是当你用Evernote记录笔记时。要是你从来没有听说过它,Evernote 专门有一个用户友好的在线服务可以在不同的设备间同步笔记。除了提供花哨的基于Web的API,Evernote还发布了在Windows、Mac、Android和iOS上的客户端。然而至今还没有官方的Linux客户端可用。老实说在众多的非官方Linux客户端中,有一个程序一出现就吸引了所有的命令行爱好者,它就是Geeknote

Geeknote 的安装

Geeknote是使用Python开发的。因此,在开始之前请确保你已经安装了Python(最好是2.7的版本)和git。

在 Debian、 Ubuntu 和 Linux Mint 中

$ sudo apt-get install python2.7 git python-setuptools
$ git clone git://github.com/VitaliyRodnenko/geeknote.git
$ cd geeknote
$ sudo python2.7 setup.py install 

在 Fedora 或者 CentOS/RHEL 中

$ sudo yum install git
$ git clone git://github.com/VitaliyRodnenko/geeknote.git
$ cd geeknote
$ sudo python setup.py install 

在 Arch Linux 中

对于ArchLinux用户,只需要使用AUR中的包。

Geeknote 的基本使用

一旦你安装完Geeknote后,你应该将Geeknote与你的Evernote账号关联:

$ geeknote login 

接着输入你的email地址、密码和你的二步验证码。如果你没有后者的话,忽略它并按下回车。

显然你需要一个Evernote账号来完成这些,因此先去注册吧。

完成这些之后,你就可以开始创建新的笔记并编辑它们了。

不过首先,你还需要设置你最喜欢的文本编辑器:

$ geeknote settings --editor vim 

然后,一般创建一条新笔记的语法是:

$ geeknote create --title [title of the new note] (--content [content] --tags [comma-separated tags] --notebook [comma-separated notebooks]) 

上面的命令中,只有‘title’是必须的,它会与一条新笔记的标题相关联。其他的标注可以为笔记添加额外的元数据:添加标签来与你的笔记关联、指定放在那个笔记本里。同样,如果你的标题或者内容中有空格,不要忘记将它们放在引号中。

比如:

$ geeknote create --title "My note" --content "This is a test note" --tags "finance, business, important" --notebook "Family" 

然后,你可以编辑你的笔记。语法很相似:

$ geeknote edit --note [title of the note to edit] (--title [new title] --tags [new tags] --notebook [new notebooks]) 

注意可选的参数如新的标题、标签和笔记本,用来修改笔记的元数据。你也可以用下面的命令重命名笔记:

$ geeknote edit --note [old title] --title [new title] 

现在基本的创建和编辑已经完成了,更高级的特性是搜索和删除。你可以下面的语法搜索你的笔记:

$ geeknote find --search [text-to-search] --tags [comma-separated tags] --notebook [comma-separated notebooks] --date [date-or-date-range] --content-search 

默认地上面的命令会通过标题搜索笔记。 用"--content-search"选项,就可以按内容搜索。

比如:

$ geeknote find --search "*restaurant" --notebooks "Family" --date 31.03.2014-31.08.2014 

显示指定标题的笔记:

$ geeknote show [title] 

我最喜欢使用的一个技巧是使用:

$ geeknote show "*" 

这会显示所有的笔记并允许你在这中选择一个。

删除一条笔记:

$ geeknote remove --note [title] 

小心这是真正的删除。它会从云存储中删除这条笔记。

最后有很多的选项来管理标签和笔记本。我想最有用的就是显示笔记本列表。

$ geeknote notebook-list 

下面的命令非常相像。你可以猜到,可以用下面的命令列出所有的标签:

$ geeknote tag-list 

创建一个笔记本:

$ geeknote notebook-create --title [notebook title] 

创建一个标签:

$ geeknote tag-create --title [tag title] 

一旦你了解了窍门,很明显这些语法是非常自然明确的。

如果你想要了解更多,不要忘记查看官方文档

福利

作为福利,Geeknote自带的gnsync工具可以让你在Evernote和本地计算机之间同步。不过,我发现它的语法有点枯燥:

$ gnsync --path [where to sync] (--mask [what kind of file to sync] --format [in which format] --logpath [where to write the log] --notebook [which notebook to use]) 

下面是这些参数的意义。

  • --path /home/adrien/Documents/notes/: 与Evernote同步笔记的位置。
  • --mask "*.txt": 只同步纯文本文件。默认gnsync会尝试同步所有文件。
  • --format markdown: 你希望它们是纯文本或者markdown格式(默认是纯文本)。
  • --logpath /home/adrien/gnsync.log: 同步日志的位置。为防出错,gnsync会在那里写入日志信息。
  • --notebook "Family": 同步哪个笔记本中的笔记。如果留空,程序会创建一个以你同步文件夹命令的笔记本。

总的来说,Geeknote是一款漂亮的Evernote的命令行客户端。我个人不常使用Evernote,但它仍然很漂亮和有用。命令行一方面让它变得很极客且很容易与shell脚本结合。此外,在Git上还有Geeknote的一个分支项目,在ArchLinux AUR上称为geeknote-improved-git,貌似它有更多的特性和比其他分支更积极的开发。我觉得值得去看看。

你认为Geeknote怎么样? 有什么你想用的么?或者你更喜欢使用传统的程序?在评论区中让我们知道。


via: http://xmodulo.com/evernote-command-line-linux.html

作者:Adrien Brochard 译者:geekpi 校对:wxy

本文由 LCTT 原创翻译,Linux中国 荣誉推出

Linux内核是一名了不起的马戏表演者,它在进程和系统资源间小心地玩着杂耍,并保持系统的正常运转。 同时,内核也很公正:它将资源公平地分配给各个进程。

但是,如果你需要给一个重要进程提高优先级时,该怎么做呢? 或者是,如何降低一个进程的优先级? 又或者,如何限制一组进程所使用的资源呢?

答案是需要由用户来为内核指定进程的优先级

大部分进程启动时的优先级是相同的,因此Linux内核会公平地进行调度。 如果想让一个CPU密集型的进程运行在较低优先级,那么你就得事先配置好调度器。

下面介绍3种控制进程运行时间的方法:

  • 使用 nice 命令手动降低任务的优先级。
  • 使用 cpulimit 命令不断的暂停进程,以控制进程所占用处理能力不超过特定限制。
  • 使用linux内建的control groups(控制组)功能,它提供了限制进程资源消耗的机制。

我们来看一下这3个工具的工作原理和各自的优缺点。

模拟高cpu占用率

在分析这3种技术前,我们要先安装一个工具来模拟高CPU占用率的场景。我们会用到CentOS作为测试系统,并使用Mathomatic toolkit中的质数生成器来模拟CPU负载。

很不幸,在CentOS上这个工具没有预编译好的版本,所以必须要从源码进行安装。先从 http://mathomatic.orgserve.de/mathomatic-16.0.5.tar.bz2 这个链接下载源码包并解压。然后进入 mathomatic-16.0.5/primes 文件夹,运行 makesudo make install 进行编译和安装。这样,就把 matho-primes 程序安装到了 /usr/local/bin 目录中。

接下来,通过命令行运行:

/usr/local/bin/matho-primes 0 9999999999 > /dev/null &

程序运行后,将输出从0到9999999999之间的质数。因为我们并不需要这些输出结果,直接将输出重定向到/dev/null就好。

现在,使用top命令就可以看到matho-primes进程榨干了你所有的cpu资源。

好了,接下来(按q键)退出 top 并杀掉 matho-primes 进程(使用 fg 命令将进程切换到前台,再按 CTRL+C)

nice命令

下面介绍一下nice命令的使用方法,nice命令可以修改进程的优先级,这样就可以让进程运行得不那么频繁。 这个功能在运行cpu密集型的后台进程或批处理作业时尤为有用。 nice值的取值范围是[-20,19],-20表示最高优先级,而19表示最低优先级。 Linux进程的默认nice值为0。使用nice命令(不带任何参数时)可以将进程的nice值设置为10。这样调度器就会将此进程视为较低优先级的进程,从而减少cpu资源的分配。

下面来看一个例子,我们同时运行两个 matho-primes 进程,一个使用nice命令来启动运行,而另一个正常启动运行:

nice matho-primes 0 9999999999 > /dev/null &
matho-primes 0 9999999999 > /dev/null &

再运行top命令。

看到没,正常运行的进程(nice值为0)获得了更多的cpu运行时间,相反的,用nice命令运行的进程占用的cpu时间会较少(nice值为10)。

在实际使用中,如果你要运行一个CPU密集型的程序,那么最好用nice命令来启动它,这样就可以保证其他进程获得更高的优先级。 也就是说,即使你的服务器或者台式机在重载的情况下,也可以快速响应。

nice 还有一个关联命令叫做 renice,它可以在运行时调整进程的 nice 值。使用 renice 命令时,要先找出进程的 PID。下面是一个例子:

renice +10 1234

其中,1234是进程的 PID。

测试完 nicerenice 命令后,记得要将 matho-primes 进程全部杀掉。

cpulimit命令

接下来介绍 cpulimit 命令的用法。 cpulimit 命令的工作原理是为进程预设一个 cpu 占用率门限,并实时监控进程是否超出此门限,若超出则让该进程暂停运行一段时间。cpulimit 使用 SIGSTOP 和 SIGCONT 这两个信号来控制进程。它不会修改进程的 nice 值,而是通过监控进程的 cpu 占用率来做出动态调整。

cpulimit 的优势是可以控制进程的cpu使用率的上限值。但与 nice 相比也有缺点,那就是即使 cpu 是空闲的,进程也不能完全使用整个 cpu 资源。

在 CentOS 上,可以用下面的方法来安装它:

wget -O cpulimit.zip https://github.com/opsengine/cpulimit/archive/master.zip
unzip cpulimit.zip
cd cpulimit-master
make
sudo cp src/cpulimit /usr/bin

上面的命令行,会先从从 GitHub 上将源码下载到本地,然后再解压、编译、并安装到 /usr/bin 目录下。

cpulimit 的使用方式和 nice 命令类似,但是需要用户使用 -l 选项显式地定义进程的 cpu 使用率上限值。举例说明:

cpulimit -l 50 matho-primes 0 9999999999 > /dev/null &

从上面的例子可以看出 matho-primes 只使用了50%的 cpu 资源,剩余的 cpu 时间都在 idle。

cpulimit 还可以在运行时对进程进行动态限制,使用 -p 选项来指定进程的 PID,下面是一个实例:

cpulimit -l 50 -p 1234

其中,1234是进程的 PID。

cgroups 命令集

最后介绍,功能最为强大的控制组(cgroups)的用法。cgroups 是 Linux 内核提供的一种机制,利用它可以指定一组进程的资源分配。 具体来说,使用 cgroups,用户能够限定一组进程的 cpu 占用率、系统内存消耗、网络带宽,以及这几种资源的组合。

对比nice和cpulimit,cgroups 的优势在于它可以控制一组进程,不像前者仅能控制单进程。同时,nice 和 cpulimit 只能限制 cpu 使用率,而 cgroups 则可以限制其他进程资源的使用。

对 cgroups 善加利用就可以控制好整个子系统的资源消耗。就拿 CoreOS 作为例子,这是一个专为大规模服务器部署而设计的最简化的 Linux 发行版本,它的 upgrade 进程就是使用 cgroups 来管控。这样,系统在下载和安装升级版本时也不会影响到系统的性能。

下面做一下演示,我们将创建两个控制组(cgroups),并对其分配不同的 cpu 资源。这两个控制组分别命名为“cpulimited”和“lesscpulimited”。

使用 cgcreate 命令来创建控制组,如下所示:

sudo cgcreate -g cpu:/cpulimited
sudo cgcreate -g cpu:/lesscpulimited

其中“-g cpu”选项用于设定 cpu 的使用上限。除 cpu 外,cgroups 还提供 cpuset、memory、blkio 等控制器。cpuset 控制器与 cpu 控制器的不同在于,cpu 控制器只能限制一个 cpu 核的使用率,而 cpuset 可以控制多个 cpu 核。

cpu 控制器中的 cpu.shares 属性用于控制 cpu 使用率。它的默认值是 1024,我们将 lesscpulimited 控制组的 cpu.shares 设为1024(默认值),而 cpulimited 设为512,配置后内核就会按照2:1的比例为这两个控制组分配资源。

要设置 cpulimited 组的 cpu.shares 为 512,输入以下命令:

sudo cgset -r cpu.shares=512 cpulimited

使用 cgexec 命令来启动控制组的运行,为了测试这两个控制组,我们先用cpulimited 控制组来启动 matho-primes 进程,命令行如下:

sudo cgexec -g cpu:cpulimited /usr/local/bin/matho-primes 0 9999999999 > /dev/null &

打开 top 可以看到,matho-primes 进程占用了所有的 cpu 资源。

因为只有一个进程在系统中运行,不管将其放到哪个控制组中启动,它都会尽可能多的使用cpu资源。cpu 资源限制只有在两个进程争夺cpu资源时才会生效。

那么,现在我们就启动第二个 matho-primes 进程,这一次我们在 lesscpulimited 控制组中来启动它:

sudo cgexec -g cpu:lesscpulimited /usr/local/bin/matho-primes 0 9999999999 > /dev/null &

再打开 top 就可以看到,cpu.shares 值大的控制组会得到更多的 cpu 运行时间。

现在,我们再在 cpulimited 控制组中增加一个 matho-primes 进程:

sudo cgexec -g cpu:cpulimited /usr/local/bin/matho-primes 0 9999999999 > /dev/null &

看到没,两个控制组的 cpu 的占用率比例仍然为2:1。其中,cpulimited 控制组中的两个 matho-primes 进程获得的cpu 时间基本相当,而另一组中的 matho-primes 进程显然获得了更多的运行时间。

更多的使用方法,可以在 Red Hat 上查看详细的 cgroups 使用说明。(当然CentOS 7也有)

使用Scout来监控cpu占用率

监控cpu占用率最为简单的方法是什么?Scout 工具能够监控能够自动监控进程的cpu使用率和内存使用情况。

Scout的触发器(trigger)功能还可以设定 cpu 和内存的使用门限,超出门限时会自动产生报警。

从这里可以获取 Scout 的试用版。

总结

计算机的系统资源是非常宝贵的。上面介绍的这3个工具能够帮助大家有效地管理系统资源,特别是cpu资源:

  • nice可以一次性调整进程的优先级。
  • cpulimit在运行cpu密集型任务且要保持系统的响应性时会很有用。
  • cgroups是资源管理的瑞士军刀,同时在使用上也很灵活。

via: http://blog.scoutapp.com/articles/2014/11/04/restricting-process-cpu-usage-using-nice-cpulimit-and-cgroups

译者:coloka 校对:wxy

本文由 LCTT 原创翻译,Linux中国 荣誉推出

Linux作为Unix的衍生操作系统,Linux内建有查看当前进程的工具ps。这个工具能在命令行中使用。

PS 命令是什么

查看它的man手册可以看到,ps命令能够给出当前系统中进程的快照。它能捕获系统在某一事件的进程状态。如果你想不断更新查看的这个状态,可以使用top命令。

ps命令支持三种使用的语法格式

  1. UNIX 风格,选项可以组合在一起,并且选项前必须有“-”连字符
  2. BSD 风格,选项可以组合在一起,但是选项前不能有“-”连字符
  3. GNU 风格的长选项,选项前有两个“-”连字符

我们能够混用这几种风格,但是可能会发生冲突。本文使用 UNIX 风格的ps命令。这里有在日常生活中使用较多的ps命令的例子。

1. 不加参数执行ps命令

这是一个基本的 ps 使用。在控制台中执行这个命令并查看结果。

不加选项执行ps命令

结果默认会显示4列信息。

  • PID: 运行着的命令(CMD)的进程编号
  • TTY: 命令所运行的位置(终端)
  • TIME: 运行着的该命令所占用的CPU处理时间
  • CMD: 该进程所运行的命令

这些信息在显示时未排序。

2. 显示所有当前进程

使用 -a 参数。-a 代表 all。同时加上x参数会显示没有控制终端的进程。

$ ps -ax

这个命令的结果或许会很长。为了便于查看,可以结合less命令和管道来使用。

$ ps -ax | less

ps all 信息

3. 根据用户过滤进程

在需要查看特定用户进程的情况下,我们可以使用 -u 参数。比如我们要查看用户'pungki'的进程,可以通过下面的命令:

$ ps -u pungki

通过用户过滤

4. 通过cpu和内存使用来过滤进程

也许你希望把结果按照 CPU 或者内存用量来筛选,这样你就找到哪个进程占用了你的资源。要做到这一点,我们可以使用 aux 参数,来显示全面的信息:

$ ps -aux | less

显示全面信息

当结果很长时,我们可以使用管道和less命令来筛选。

默认的结果集是未排好序的。可以通过 --sort命令来排序。

根据 CPU 使用来升序排序

$ ps -aux --sort -pcpu | less

根据cpu使用排序

根据 内存使用 来升序排序

$ ps -aux --sort -pmem | less

根据内存使用来排序

我们也可以将它们合并到一个命令,并通过管道显示前10个结果:

$ ps -aux --sort -pcpu,+pmem | head -n 10

5. 通过进程名和PID过滤

使用 -C 参数,后面跟你要找的进程的名字。比如想显示一个名为getty的进程的信息,就可以使用下面的命令:

$ ps -C getty

通过进程名和PID过滤

如果想要看到更多的细节,我们可以使用-f参数来查看格式化的信息列表:

$ ps -f -C getty

通过进程名和PID过滤

6. 根据线程来过滤进程

如果我们想知道特定进程的线程,可以使用-L 参数,后面加上特定的PID。

$ ps -L 1213

根据线程来过滤进程

7. 树形显示进程

有时候我们希望以树形结构显示进程,可以使用 -axjf 参数。

$ps -axjf

树形显示进程

或者可以使用另一个命令。

$ pstree

树形显示进程

8. 显示安全信息

如果想要查看现在有谁登入了你的服务器。可以使用ps命令加上相关参数:

$ ps -eo pid,user,args

参数 -e 显示所有进程信息,-o 参数控制输出。Pid,User 和 Args参数显示PID,运行应用的用户该应用

显示安全信息

能够与-e 参数 一起使用的关键字是args, cmd, comm, command, fname, ucmd, ucomm, lstart, bsdstart 和 start

9. 格式化输出root用户(真实的或有效的UID)创建的进程

系统管理员想要查看由root用户运行的进程和这个进程的其他相关信息时,可以通过下面的命令:

$ ps -U root -u root u

-U 参数按真实用户ID(RUID)筛选进程,它会从用户列表中选择真实用户名或 ID。真实用户即实际创建该进程的用户。

-u 参数用来筛选有效用户ID(EUID)。

最后的u参数用来决定以针对用户的格式输出,由User, PID, %CPU, %MEM, VSZ, RSS, TTY, STAT, START, TIME 和 COMMAND这几列组成。

这里有上面的命令的输出结果:

show real and effective User ID

10. 使用PS实时监控进程状态

ps 命令会显示你系统当前的进程状态,但是这个结果是静态的。

当有一种情况,我们需要像上面第四点中提到的通过CPU和内存的使用率来筛选进程,并且我们希望结果能够每秒刷新一次。为此,我们可以将ps命令和watch命令结合起来

$ watch -n 1 ‘ps -aux --sort -pmem, -pcpu’

组合 ps 和 watch

如果输出太长,我们也可以限制它,比如前20条,我们可以使用head命令来做到。

$ watch -n 1 ‘ps -aux --sort -pmem, -pcpu | head 20’

组合 ps 和 watch

这里的动态查看并不像top或者htop命令一样。但是使用ps的好处是你能够定义显示的字段,你能够选择你想查看的字段。

举个例子,如果你只需要看名为'pungki'用户的信息,你可以使用下面的命令:

$ watch -n 1 ‘ps -aux -U pungki u --sort -pmem, -pcpu | head 20’

组合 ps 和 watch

结论

你也许每天都会使用ps命令来监控你的Linux系统。但是事实上,你可以通过ps命令的参数来生成各种你需要的报表。

ps命令的另一个优势是ps是各种 Linux系统都默认安装的,因此你只要用就行了。

不要忘了通过 man ps来查看更多的参数。(LCTT 译注:由于 ps 命令古老而重要,所以它在不同的 UNIX、BSD、Linux 等系统中的参数不尽相同,因此如果你用的不是 Linux 系统,请查阅你的文档了解具体可用的参数。)


via: http://linoxide.com/how-tos/linux-ps-command-examples/

作者:Pungki Arianto 译者:johnhoow 校对:wxy

本文由 LCTT 原创翻译,Linux中国 荣誉推出

Coreutils Viewer(cv)是一个简单的程序,它可以用于显示任何核心组件命令(如:cp、mv、dd、tar、gzip、gunzip、cat、grep、fgrep、egrep、cut、sort、xz、exiting)的进度。它使用文件描述信息来确定一个命令的进度,比如cp命令。cv之美在于,它能够和其它Linux命令一起使用,比如你所知道的watch以及I/O重定向命令。这样,你就可以在脚本中使用,或者你能想到的所有方式,别让你的想象力束缚住你。

安装

你可以从cv的github仓库那儿下载所需的源文件。把zip文件下载下来后,将它解压缩,然后进入到解压后的文件夹。

该程序需要ncurses library。如果你已经在你的Linux系统中安装了ncurses,那么cv的安装过程对你而言就是那么的轻松写意。

通过以下两个简单步骤来进行编译和安装吧。

$ make
$ sudo make install

运行cv

要运行cv,只需要想其它程序一样,在命令行输入此命令即可。如果你没有执行make install,而选择从当前目录中去运行,那么你可以运行以下命令:

$ ./cv

否则,就运行以下命令吧。

$ cv

如果没有核心组件命令在运行,那么cv程序会退出,并告诉你:没有核心组件命令在运行。

cv no command

要有效使用该程序,请在你系统上运行某个核心组件程序。在本例中,我们将使用cp命令。

当拷贝一个打文件时,你就可以看到当前进度了,以百分比显示。

cv default

添加选项到 cv

你也可以添加几个选项到cv命令,就像其它命令一样。一个有用的选项是让你了解到拷贝或移动大文件时的预计剩余时间。

添加-w选项,它就会帮你显示预计的剩余时间。

$ cv -w

cv estimated throughput

试着添加更多的命令选项吧。像下面这样添加其它选项:

$ cv -wq

cv 和 watch 命令

watch是一个用于周期性运行程序并显示输出结果的程序。有时候,你可能想要持续看看命令运行状况而不想将 cv 的结果存储到日志文件中。在这种情况下,watch就会派上用场了,它可以和cv一起使用。

$ watch cv -qw

该命令将会显示所有运行着的核心组件命令的实例。它也会显示进度和预计完成时间。

cv and watch

在日志文件中查看输出结果

正如其所承诺的那样,你可以使用cv来重定向它的输出结果到一个日志文件。这功能在命令运行太快而看不到任何有意义的内容时特别有用。

要在日志文件中查看进度,你仅仅需要重定向输出结果,就像下面这样。

$ cv -w >> log.txt

要查看该命令的输出结果,请用你喜爱的文本编辑器打开日志文件,也可以用cat命令,就像下面这样:

$ cat log.txt

获得帮助

如果你在任何地方受到阻碍,你总是可以通过查阅手册页或使用help选项来获取帮助信息。 要获取帮助信息,可以使用带-h选项的cv命令。

$ cv -h

如果需要更多详细信息,那么手册页是个很不错的地方。

$ man cv

但是,要获取上述手册页,你必须执行make install来安装cv。

耶!现在,你的Linux工具箱中又多了个伟大的工具。 你学会么?亲自去试试吧~


via: http://linoxide.com/linux-command/tool-show-command-progress/

作者:Allan Mbugua 译者:GOLinux 校对:wxy

本文由 LCTT 原创翻译,Linux中国 荣誉推出