正在浏览 Linux系统管理 里的文章

man pkill or pgrep

抢沙发

说明
pgrep, pkill - 通过名称或其他属性查找进程ID,并对这些进程ID发送信号量

命令使用

pgrep [-flvx] [-d delimiter] [-n|-o] [-P ppid,...] [-g pgrp,...]
[-s sid,...] [-u euid,...] [-U uid,...] [-G gid,...]
[-t term,...] [pattern]
 
pkill [-signal] [-fvx] [-n|-o] [-P ppid,...] [-g pgrp,...]
[-s sid,...] [-u euid,...] [-U uid,...] [-G gid,...]
[-t term,...] [pattern]

描述

pgrep 可以找出但前运行进程的ID号。通过完全匹配的程序名来获得给定程序名称的进程ID或ID列表,例如:
 
pgrep -u root sshd
 
列出进程名为sshd并且拥有者为root的进程ID。
 
pgrep -u root,daemon
 
列出进程拥有者为root或daemon的进程ID。
 
pkill  将会发送指定的信号量到每一个在标准输出设备中列出的进程ID。信号量的定义通kill命令。

命令选项

-d 分隔符
设置在输出显示时每个进程ID之间的分隔符
(默认为回车换行).  (pgrep 可用.)
 
-f 当我想找一个完成的命令时需要使用给参数。也就是说想查找完整的命令。如下:
pgrep -f "/usr/local/nagios/bin/nagios -d /usr/local/nagios/etc/nagios.cfg"
 
-g pgrp,...
列出组ID为给定数字的进程ID。进程组0被解释为pgrep或pkill自己的进程组。
 
-G gid,...
列出用户给出数字的进程ID。可以使用数字或字符
 
-l 列出进程ID的名称。 (pgrep 可用)
 
-n 仅选择最新的进程 (也就是最近启动的) 
 
-o 仅选择最旧的进程 (最早启动的)
 
-P ppid,...
Only match processes whose parent process ID is listed.
 
-s sid,...
Only  match  processes whose process session ID is listed.  Ses-
sion ID 0 is translated into pgrep’s or pkill’s own session  ID.
 
-t term,...
Only  match processes whose controlling terminal is listed.  The
terminal name should be specified without the "/dev/" prefix.
 
-u euid,...
Only match processes whose effective user ID is listed.   Either
the numerical or symbolical value may be used.
 
-U uid,...
Only  match  processes whose real user ID is listed.  Either the
numerical or symbolical value may be used.
 
-v     否定匹配.
 
-x     仅匹配非给定名称的进程。
 
-signal
将信号量发送给每一个匹配的进程。可以使用数字或信号量名称(pkill  可用)

EXAMPLES

Example 1: 查找名为daemon的进程ID:
 
unix$ pgrep -u root named
 
Example 2: 使syslog重新读取配置文件:
 
unix$ pkill -HUP syslogd
 
Example 3: 显示所有xterm进程的详细信息:
 
unix$ ps -fp $(pgrep -d, -x xterm)
 
Example 4: 调节所有netscape进程的的优先级:
 
unix$ renice +4 ‘pgrep netscape‘

退出状态

0      一个或多个进程匹配所给条件。
 
1      没有进程匹配。
 
2      命令行语法错误。
 
3      致命错误: 如内存溢出等.

注意
进程名限制为15个字符。使用-f参数来扩展该限制。

运行pgrep或pkill进程时不会将自己算作匹配项。

附录

代号

名称

内容

1

SIGHUP

启动被终止的程序,可让该 PID 重新读取自己的配置文件,类似重新启动

2

SIGINT

相当于用键盘输入 [ctrl]-c 来中断一个程序的进行

9

SIGKILL

代表强制中断一个程序的进行,如果该程序进行到一半, 那么尚未完成的部分可能会有『半产品』产生,类似 vim会有 .filename.swp 保留下来。

15

SIGTERM

以正常的结束程序来终止该程序。由于是正常的终止, 所以后续的动作会将他完成。不过,如果该程序已经发生问题,就是无法使用正常的方法终止时, 输入这个 signal 也是没有用的。

17

SIGSTOP

相当于用键盘输入 [ctrl]-z 来暂停一个程序的进行

本文转自 http://www.machinema.cn/677
这里说说怎么让nginx的配置文件高亮

mkdir -p /root/.vim/syntax
cd /root/.vim/syntax
vi nginx.vim

加入下面这一段

?Download nginx.vim
" Vim syntax file
" Language:     Nginx configuration (nginx.conf)
" Maintainer:   Evan Miller
" Last Change:  2007 May 02
" Notes: This is a bit patchy.
if exists("b:current_syntax")
finish
end
setlocal iskeyword+=.
setlocal iskeyword+=/
setlocal iskeyword+=:
" basics
syn match ngxStringVariable "\$\w\w*" contained
syn region ngxString start=+"+ end=+"+ skip=+\\\\\|\\"+ contains=ngxStringVariable oneline
syn region ngxString start=+'+ end=+'+ skip=+\\\\\|\\'+ contains=ngxStringVariable oneline
" Main
syn keyword ngxDirective daemon debug_points error_log lock_file master_process pid ssl_engine timer_resolution user group worker_cpu_affinity worker_priority worker_processes worker_rlimit_core worker_rlimit_nofile worker_rlimit_sigpending working_directory
syn keyword ngxDirectiveImportant include
syn keyword ngxBlockDirective http events contained
syn keyword ngxBlockDirective server contained
"Events
syn keyword ngxDirective accept_mutex accept_mutex_delay debug_connection devpoll_changes devpoll_events epoll_events kqueue_changes kqueue_events multi_accept rtsig_signo rtsig_overflow_events rtsig_overflow_test rtsig_overflow_threshold use worker_connections
" HTTP core
syn keyword ngxDirective alias client_body_in_file_only client_body_buffer_size client_body_temp_path client_body_timeout client_header_buffer_size client_header_timeout client_max_body_size default_type keepalive_timeout large_client_header_buffers limit_rate msie_padding msie_refresh optimize_server_names port_in_redirect recursive_error_pages satisfy_any send_timeout sendfile server_names_hash_max_size server_names_hash_bucket_size tcp_nodelay tcp_nopush internal
syn keyword ngxDirective output_buffers postpone_output send_lowat connections
syn keyword ngxDirectiveImportant root server server_name listen
syn keyword ngxDirectiveError error_page
syn keyword ngxBlockDirective location limit_except types contained
" Access
syn keyword ngxDirective allow deny
" Auth
syn keyword ngxDirective auth_basic auth_basic_user_file
" Auto-index
syn keyword ngxDirective autoindex
syn keyword ngxDirective autoindex_exact_size
syn keyword ngxDirective autoindex_localtime
" DAV
syn keyword ngxDirective dav_access dav_methods create_full_put_path
" FastCGI
syn keyword ngxDirective fastcgi_index fastcgi_hide_header fastcgi_intercept_errors fastcgi_param fastcgi_pass_header fastcgi_redirect_errors
syn keyword ngxDirectiveImportant fastcgi_pass
" gzip
syn keyword ngxDirective gzip gzip_buffers gzip_comp_level gzip_min_length gzip_http_version gzip_proxied gzip_types
" header
syn keyword ngxDirective add_header
syn keyword ngxDirective expires
" auto-index
syn keyword ngxDirective index
" log
syn keyword ngxDirective access_log log_format
" proxy
syn keyword ngxDirective proxy_buffer_size proxy_buffering proxy_buffers proxy_connect_timeout proxy_hide_header proxy_intercept_errors proxy_method proxy_next_upstream proxy_pass_header proxy_read_timeout proxy_redirect_errors proxy_send_timeout proxy_set_header proxy_temp_path proxy_temp_file_write_size proxy_busy_buffers_size proxy_send_lowat
syn keyword ngxDirectiveImportant proxy_pass proxy_redirect
" rewrite
syn keyword ngxDirectiveControl break return set uninitialized_variable_warn rewrite
syn keyword ngxDirective uninitialized_variable_warn
syn keyword ngxBlockDirective if contained
" SSL
syn keyword ngxDirective ssl ssl_certificate ssl_certificate_key ssl_client_certificate ssl_ciphers ssl_prefer_server_ciphers ssl_protocols ssl_verify_client ssl_verify_depth ssl_session_cache ssl_session_timeout
" Upstream
syn keyword ngxDirective ip_hash server
syn keyword ngxBlockDirective upstream contained
" Addition
syn keyword ngxDirectiveImportant add_before_body add_after_body
" Charset
syn keyword ngxDirective charset charset_map override_charset source_charset
" empty gif
syn keyword ngxDirective empty_gif
" geo
syn keyword ngxBlockDirective geo
" map
syn keyword ngxBlockDirective map
syn keyword ngxDirective map_hash_max_size map_hash_bucket_size
" realip
syn keyword ngxDirective set_real_ip_from real_ip_header
" referer
syn keyword ngxDirective valid_referers
" ssi
syn keyword ngxDirective ssi
" user id
syn keyword ngxDirective userid userid_domain userid_expires userid_name userid_p3p userid_path userid_service
" sub filter
syn keyword ngxDirective sub_filter sub_filter_once sub_filter_types
" perl
syn keyword ngxDirective perl_modules perl_require perl_set
" limit zone
syn keyword ngxDirective limit_zone limit_conn
" memcache
syn keyword ngxDirective memcached_connect_timeout memcached_send_timeout memcached_read_timeout memcached_buffer_size memcached_next_upstream
syn keyword ngxDirectiveImportant memcached_pass
" stub
syn keyword ngxDirective stub_status
" flv
syn keyword ngxDirective flv
" browser
syn keyword ngxDirective ancient_browser ancient_browser_value modern_browser modern_browser_value
syn region ngxStartBlock start=+^+ end=+{+ contains=ngxBlockDirective,ngxContextVariable oneline
syn match ngxContextVariable "\$\w\w*" contained
syn match ngxComment " *#.*$"
syn match ngxVariable "\$\w\w*"
hi link ngxBlockDirective Statement
hi link ngxStartBlock Normal
hi link ngxStringVariable Special
hi link ngxDirectiveControl Special
hi link ngxComment Comment
hi link ngxString String
hi link ngxDirective Identifier
hi link ngxDirectiveImportant Type
hi link ngxVariable Identifier
hi link ngxContextVariable Identifier
hi link ngxDirectiveError Constant
let b:current_syntax = "nginx"

然后打开/root/.vim/filetype.vim
vi /root/.vim/filetype.vim
加入下面这一段
au BufRead,BufNewFile /usr/local/nginx/conf/* set ft=nginx

linux命令提示符是由PS1、PS2变量定义的。默认的值为"[\u@\h \W]\\$ " 全局的PS1变量在/etc/bashrc文件中有定义,如果是普通用户提示符最后显示$,root用户显示#。下面为定义PS1变量时可用的变量:

字符 含义
\! 显示该命令的历史记录编号。
\# 显示当前命令的命令编号。
\$ 显示$符作为提示符,如果用户是root的话,则显示#号。
\\ 显示反斜杠。
\d 显示当前日期。
\h 显示主机名。
\n 打印新行。
\nnn 显示nnn的八进制值。
\s 显示当前运行的shell的名字。
\t 显示当前时间。
\u 显示当前用户的用户名。
\W 显示当前工作目录的名字。
\w 显示当前工作目录的路径。

这些特殊字符能组合成很多种有用的提示符方案(也可以组合为很奇异的方案),例如把 PS1 设为:
PS1="\t"
这导致提示符显示当前的时间,就象下面的显示一样(提示符后面将不会有空格):
02:16:15
而下面的设置:
PS1=\t
将导致提示符变成下面的样子:
t
这显示了设置中引号的重要性,下面的提示符串:
PS1="\t\\ "
会使提示符看起来象这个样子:
02:16:30\
这种情况下,提示符后面会有一个空格,因为引号里有一个空格。

如果想对某个账户设置自定的命令行提示符,可以编辑用户的/home/用户 目录下编辑 .bashrc文件,添加PS1变量的定义。root用户则在 /root/.bashrc 文件中定义。例如:

# vi ~/.bashrc

PS1=”[\u@\h \w]\\$ “

保存退出后退出当前终端或者重新运行bash命令就可以看到修改后的效果了。如下:

[root@monitor /data/soft]#

颜色化提示符
Linux提示符也可以定义显示不同的颜色,其颜色值的定义参见 echo命令高级应用——显示带颜色的字符
如编辑 ~/.bashrc 文件 添加如下设置:
PS1="\[\e[1;37m\][\u@\h \w]\[\e[1;32m\]\[\e[01m\]\\$ \[\e[0m\]"

重新连接发现提示符变成了如下显示:
image

http://salogs.com/2009/07/echo%E5%91%BD%E4%BB%A4%E9%AB%98%E7%BA%A7%E5%BA%94%E7%94%A8%E2%80%94%E2%80%94%E6%98%BE%E7%A4%BA%E5%B8%A6%E9%A2%9C%E8%89%B2%E7%9A%84%E5%AD%97%E7%AC%A6/

2009.03.24
      在配置各个网络服务的时候,由于各个服务的配置不同,导致了其衍生出来的文件放置位置也很无序。
例如:nginx ,在源码编译完成后会在prefix目录(编译时指定Prefix=/usr/local/nginx)中生成几
个其要用到的目录,如logs、conf、html、sbin,这些目录根据其名称就可以判断出是用来放置什么
文件的。这样看起来虽然说很有调理,但如果我编译安装的程序很多,都放到了/usr/local目录下了
那么各个服务都有log文件,都有pid文件。如果我要查找的话还必须到每个服务目录的相应目录中去
查找,很不方便。还有如果log文件很大的话也会很占用/usr目录(分区空间)。RedHat和CentOS的发
行版本中,推荐将/var 和 /usr 单独分区的。这是因为发行版本中将各个程序的目录分配得很合理。
下面列出了发行版本中一些默认的目录及其作用:

/etc/        所有的服务关于配置相关的文件都在/etc目录中,如apache:/etc/httpd ssh:/etc/ssh
/var/log    各个程序的log文件存放位置
/var/run    各个程序的pid文件

这样做的目的是为了便于管理,而且有利于磁盘空间的有效利用。那有些人又会说了,如果我编译安
装的话,各个目录都在我的prefix目录中,我进到这个目录中很容易的查看该服务的相关文件如log,
pid文件等。那我如何才能既便于管理,又看起来在同一个prefix目录中呢。有个好办法,那就是利用
连接,我将系统中默认的公共log路径连接到我程序的prefix目录中就能解决这个问题了。事实上操作
系统的发行版本中也就是这么做的。如apache,我到apache目录看一眼:
[root@myvmm ~]# ll /etc/httpd/
total 16
drwxr-xr-x 2 root root 4096 Mar 24 09:25 conf
drwxr-xr-x 2 root root 4096 Mar 23 16:53 conf.d
lrwxrwxrwx 1 root root   19 Jan 10 12:21 logs -> ../../var/log/httpd
lrwxrwxrwx 1 root root   27 Jan 10 12:21 modules -> ../../usr/lib/httpd/modules
lrwxrwxrwx 1 root root   13 Jan 10 12:21 run -> ../../var/run

呵呵,看到了吧,它就是将系统的专属功能目录连接到了自己目录下,这样在apahce配置文件的时候
也就可以直接写连接路径了,而不必去写那些路径的绝对路径了,可能你还不是很明白,看看apache
的关于pid和log文件的设置就清楚了:

[root@myvmm ~]# vi /etc/httpd/conf/httpd.conf
PidFile run/httpd.pid
ErrorLog logs/error_log
CustomLog logs/access_log combined

apache 关于pid,log文件的位置是直接写的 目录/文件名 的形式。由于run,logs目录是与conf同级
别的,所以这里就直接写了 run/httpd.pid;logs/error_log 等。经过实践绝对不能将目录修改为../run/
的形式,如果这样的话apache会找不到路径!切忌。

这里只例举了apahce的例子,不同的程序配置也不同,但规则是这样的。配置也就离不开这个框框了。

转载

      Curl也是Linux下不错的命令行下载工具,小巧、高速,唯一的缺点是不支持多线程下载。在http://curl.haxx.se/download/curl-7.14.0.tar.gz下载最新版本。

下载后便可使用如下命令编译安装:
#tar zxvf curl-7.14.0.tar.gz
#cd curl-7.14.0/
#./configure
#make
#make test
#make install

Curl使用格式如下:
#curl [选项][下载地址] Curl典型下载如下:
#curl -O http://10.1.27.10/~kennycx/tools/lumaqq_2004-linux_gtk2_x86_with_jre.tar.gz
使用Curl下载一个文件并保存到当前目录。此外,Curl虽然不支持多线程下载,但他可同时下载多个文件或下载文件的某一部分,可使用如下命令实现:
#curl -r 0-199 http://www.netscape.com/ 获得文件的前200 bytes。
对于常用的代理下载Curl也可轻松实现,具体操作如下:
#curl -x 10.1.27.10:1022 ftp://ftp.funet.fi/README
使用代理地址为10.1.27.10端口为1022的代理服务器下载一个文件。
#curl -U user:passwd -x 10.1.27.10:1022 ftp://ftp.funet.fi/README
如果代理服务器需要特别的验证,则需要在user:passwd处输入合法的帐号和密码。
以上部分来源于:
http://www.phpv.net/article.php/1546
------------
使用 cURL 度量 Web 站点的响应时间
$curl -o /dev/null -s -w %{time_connect}:%{time_starttransfer}:%{time_total} http://www.chinaunix.net
0.081:0.272:0.779
通过 -o 参数发送到 /dev/null。 -s 参数去掉所有状态信息。-w参数让 curl 写出列出的计时器的状态信息:
time_connect     建立到服务器的 TCP 连接所用的时间
time_starttransfer     在发出请求之后,Web 服务器返回数据的第一个字节所用的时间
time_total       完成请求所用的时间
这些计时器都相对于事务的起始时间,甚至要先于 Domain Name Service(DNS)查询。
因此,在发出请求之后,Web 服务器处理请求并开始发回数据所用的时间是 0.272 - 0.081 = 0.191 秒。
客户机从服务器下载数据所用的时间是 0.779 - 0.272 = 0.507 秒。