「jstack」

jstack,为Java进程、核心文件、远程调试服务器打印Java线程栈跟踪。
命令行语法格式(SYNOPSIS)
jstack [ options ] pid jstack [ options ] executable core jstack [ options ] [ server-id@ ] remote-hostname-or-IP
options 命令行选项,查看Options章节。
pid 要打印的栈跟踪的进程ID。该进程必须是Java进程ID。使用jps(1)命令Java进程的列表。
executable 生成核心转储的Java可执行文件。
core 要打印栈跟踪的「核心文件」。
remote-hostname-or-IP 远程Debug Server的IP或者主机名。参阅jsadebugd(1)。
server-id 当同一个主机上运行了多个Debug Server的时候,可以使用server-id来指定。
命令简述(DESCRIPTION)
对于指定的Java进程、核心文件、远程调试服务器,jstack命令打印它们的Java线程的Java栈跟踪。对于每个Java帧,打印完整的类名、方法名称、字节码索引(BCI)、行号。 使用-m选项时,jstack命令使用程序计数器(PC)打印所有线程的Java和本机帧。对于每个本机帧,打印最接近PC的本机符号(如果可用)。C++被破坏的名称没有被清除。要清除C++名称,该命令的输出可以被管道传输到c++filt。当指定的进程在64位Java虚拟机上运行时,可能需要指定-J-d64选项,例如:jstack -J-d64 -m pid。
注意:jstack不受支持,在将来的JDK版本中可能会移除。在不存在dbgeng.dll文件的Windows系统中,必须安装适用于Windows的调试工具,以便这些工具起作用。PATH环境变量需要包含目标进程使用的jvm.dll的位置或生成崩溃转储文件的位置。例如:

set PATH=<jdk>\jre\bin\client;%PATH%

命令支持的选项及含义(OPTIONS)
-F 当jstack [-l] pid没有响应时,强制进行栈转储。
-l 长列表。打印有关锁的其他信息,例如属于java.util.concurrent可用同步器的列表。 参见AbstractOwnableSynchronizer类描述:http://docs.oracle.com/javase/8/docs/api/java/util/concurrent/locks/AbstractOwnableSynchronizer.html
-m 打印混合模式的栈[……]

READ MORE

「scp(1)」- 安全复制(远程文件复制程序)

常用命令
复制目录到远程主机:

scp -r ./src/folder hostname:/tmp/dst/folder

注意事项: 1)scp 目前无法通过比较时间戳来决定是否复制文件,需要使用其他方法。
语法格式

scp [-12346BCpqrv] [-c cipher] [-F ssh_config] [-i identity_file] [-l limit] [-o ssh_option] [-P port] [-S program] [[user@]host1:]file1 … [[user@]host2:]file2

命令描述
命令scp在网络上的主机之间复制文件。 它使用ssh(1)进行数据传输,并使用相同的身份验证以及提供与ssh(1)相同的安全性。 如果需要进行身份验证,scp会要求输入密码或密码短语。
文件名可以包含用户和主机规范,以指示要将文件复制到该主机,或从该主机复制该文件。 可以使用绝对路径名或相对路径名显式本地文件名,以避免scp将包含“:”的文件名视为主机说明符。还允许两个远程主机之间的副本。
命令选项
-1 强制scp使用版本1协议
-2 强制scp使用版本2协议
-3 两个远程主机之间的副本通过本地主机传输。 如果没有此选项,数据将直接在两个远程主机之间复制。 请注意,此选项会禁用进度表。
-4 强制scp仅使用IPv4地址。
-6 强制scp仅使用IPv6地址。
-B 选择批处理模式(防止要求输入密码或密码)。
-C 压缩启用。 将-C标志传递给ssh(1)以启用压缩。
-c cipher 选择用于加密数据传输的密码。 此选项直接传递给ssh(1)。
-F ssh_config 为ssh指定备用的每用户配置文件。 此选项直接传递给ssh(1)。
-i identity_file 选择从中读取公钥身份验证的标识(私钥)的文件。 此选项直接传递给ssh(1)。
-l limit 限制使用的带宽,以Kbit/s为单位。
-o ssh_option 可用于以ssh_config(5)中使用的格式将选项传递给ssh。 这对于指定“没有单独的scp命令行标志”的选项很有用。有关下面列出的选项及其可能值的完整详细信息,请参阅ssh_config(5)。

AddressFamily, BatchMode, BindAddress, CanonicalDomains, CanonicalizeFallbackLocal, CanonicalizeHostname, CanonicalizeMaxDots, CanonicalizePer[……]

READ MORE

「Linux下,sftp命令使用详解」

sftp — secure file transfer program
SYNOPSIS
sftp [-46aCfpqrv] [-B buffer_size] [-b batchfile] [-c cipher] [-D sftp_server_path] [-F ssh_config]

[-i identity_file] [-l limit] [-o ssh_option] [-P port] [-R num_requests] [-S program]
[-s subsystem | sftp_server] host
sftp [user@]host[:file …]
sftp [user@]host[:dir[/]]
sftp -b batchfile [user@]host

DESCRIPTION
sftp is an interactive file transfer program, similar to ftp(1), which performs all operations over an encrypted ssh(1) transport. It may also use many features of ssh, such as public key authentication and com‐ pression. sftp connects and logs into the specified host, then enters an interactive command mode.
The second usage format will retrieve files automatically if a non-interactive authentication method is used; otherwise it will do so after successful interactive authentication.
The third usage format allows sftp to start in a remote directory.
The final usage format allows for automated sessions using the -b option. In such cases, it is necessary to configure non-interactive authentication to obviate the need to enter a password at connection time (see sshd(8) and ssh-keygen[……]

READ MORE

「ssh-copy-id(1)」-

使用本地可用密钥来授权远程计算机上的登录
命令语法格式
ssh-copy-id [-f] [-n] [-i [identity_file]] [-p port] [-o ssh_option] [user@]hostname
ssh-copy-id -h | -?
命令描述
命令ssh-copy-id是一个使用ssh(1)登录远程计算机的脚本(可能使用登录密码,因此应启用密码验证,除非您已经巧妙地使用了多个身份)。 它汇编了一个或多个指纹的列表(如下所述)并尝试使用每个密钥登录,以查看是否已安装任何指纹(当然,如果您不使用ssh-agent(1),这可能会导致 在你被反复提示通过短语)。 然后它汇总了那些无法登录的列表,并使用ssh启用了远程服务器上的这些密钥登录。 默认情况下,它通过将密钥附加到远程用户的~/.ssh/authorized_keys(如果需要,创建文件和目录)来添加密钥。它还能够检测远程系统是否是NetScreen,并使用其“set ssh pka-dsa key …”命令。
命令行选项
支持的命令行选项如下:
-i identity_file 仅使用identity_file中包含的密钥(而不是通过ssh-add(1)或default_ID_file查找身份)。如果文件名不以.pub结尾,则会添加。如果省略文件名,则使用default_ID_file文件。
请注意,这可以用于确保复制的密钥具有”应用的注释“和”应用的额外“选项,方法是确保密钥文件在尝试复制之前将这些设置为首选。
-f 强制模式:不检查远程服务器上是否存在密钥。 这意味着它不需要私钥。 当然,这可能导致远程系统上安装了多个密钥副本。
-n 做一个干跑。只需打印已安装的密钥,而不是在远程系统上安装密钥。
-p port, -o ssh_option 这两个选项简单地直接传递,以允许分别设置端口或其他ssh(1)选项。
相比将这些指定为命令行选项,在ssh(1)配置文件中使用(每个主机)设置通常更好:ssh_config(5)。
-h, -? 显示帮助信息。
注意事项
没有选项-i的默认行为是检查ssh-add -L是否提供任何输出,如果是,则使用这些密钥。 请注意,这会导致密钥的注释是当密钥的文件名,被加载到ssh-agent(1)时传给ssh-add(1),而不是该文件中包含的注释,这有点像丢人现眼。 否则,如果ssh-add(1)未提供任何密钥,则将使用default_ID_file的内容。
变量default_ID_file是最新匹配的文件:~/.ssh/id*.pub,(不包括匹配~/.ssh/*-cert.pub的文件)所以如果你创建的密钥不是[……]

READ MORE

「ssh-keyscan(1)」-

收集SSH公钥
命令语法格式
ssh-keyscan [-46cHv] [-f file] [-p port] [-T timeout] [-t type] [host | addrlist namelist] …
命令描述
命令ssh-keyscan是一个实用程序,用于从许多主机的收集公共SSH主机密钥。它旨在帮助构建和验证ssh_known_hosts文件。 ssh-keyscan提供了一个适合于Shell和Perl脚本使用的最小接口。
命令ssh-keyscan使用非阻塞套接字I/O来并行地联系尽可能多的主机,因此它非常有效。可以在几十秒内收集来自1,000个主机的域中的密钥,即使其中一些主机已关闭或未运行ssh也是如此。 对于扫描,不需要对正在扫描的计算机进行登录访问,扫描过程也不需要任何加密。
命令行选项
支持的选项如下:
-4 强制ssh-keyscan使用IPv4地址。
-6 强制ssh-keyscan使用IPv6地址。
-c 从目标主机请求证书,而不是普通密钥。
-f file 从文件中读取”主机“或“addrlist namelist”对,每行一个。 如果参数file为”-“,而不是文件名,则ssh-keyscan将从标准输入读取”主机“或“addrlist namelist”对。
-H 散列输出中的所有主机名和地址。 散列名通常可以由ssh和sshd使用,但如果文件的内容被公开,它们不会显示识别信息。
-p port 要连接到远程主机的端口。
-T timeout 设置连接尝试的超时。 如果自从向主机启动连接或自上次从该主机读取任何内容后timeout秒已经过去,则连接将关闭,并且相关主机被视为不可用。 默认值为5秒。
-t type 指定从扫描的主机获取的密钥类型。 对于协议版本1,可能的值是“rsa1”;对于协议版本2,可能的值是“dsa”,“ecdsa”,“ed25519”,“rsa”。可以通过用逗号分隔它们来指定多个值。 默认设置是获取“rsa”,“ecdsa”,“ed25519”密钥。
-v 详细模式。 使ssh-keyscan打印有关其进度的调试消息。
注意事项
如果服务器早于2.9版,它会在其扫描的所有计算机的控制台上生成“Connection closed by remote host”消息。 这是因为它打开了与ssh端口的连接,读取公钥,并在获得密钥后立即断开连接。
SECURITY
如果使用ssh-keyscan构建ssh_known_hosts文件而不验证密钥,则用户在中间攻击时将容易受到攻击。 另一方面,如果安全模型允许这样的风险,ssh-keyscan可以帮助检测在创建s[……]

READ MORE

「openssl」

c_rehash,is a Perl script that scans all files in a directory and adds symbolic links to their hash values.
openssl,is a command-line tool for using the various cryptography functions of OpenSSL’s crypto library from the shell. It can be used for various functions which are documented in man 1 openssl.
参考文献
BLFS/OpenSSL-1.0.2h

章节列表
「openssl」-[……]

READ MORE

「openssl」-

功能简述
OpenSSL 命令行工具
常用命令
输出证书过期时间:

openssl x509 -in “/path/to/your-file.pem” -noout -enddate

输出证书签发的通用名(subject、Common Name):

openssl x509 -in “/path/to/your-file.pem” -noout -subject

语法格式

openssl command [ command_opts ] [ command_args ]

openssl list [ standard-commands | digest-commands | cipher-commands | cipher-algorithms | digest-algorithms | public-key-algorithms]

openssl no-XXX [ arbitrary options ]

命令描述

OpenSSL is a cryptography toolkit implementing the Secure Sockets Layer (SSL v2/v3) and Transport Layer Security (TLS v1) network protocols and related cryptography standards required by them.

The openssl program is a command line tool for using the various cryptography functions of OpenSSL’s crypto library from the shell. It can be used for

o Creation and management of private keys, public keys and parameters
o Public key cryptographic operations
o Creation of X.509 certificates, CSRs and CRLs
o Calculation of Message Digests
o Encryption and Decryption with Ciphers
o SSL/TLS Client and Server Tests
o Handling of S/MIME signed or encrypted mail
o Time Stam[……]

READ MORE

「parted」

安装的可执行程序
parted is a partition manipulation program.
partprobe informs the OS of partition table changes.
参考文献

BLFS/parted-3.2

章节列表
「parted」- 「partprobe(8)」-[……]

READ MORE

「parted」-

分区操作程序
命令语法格式
parted [options] [device [command [options…]…]]
命令描述
命令parted是一个操作磁盘分区的程序。 它支持多种分区表格式,包括MS-DOS和GPT。 它对于为新的操作系统创建空间、重新组织磁盘使用、将数据复制到新硬盘非常有用。
本手册页文档简要分类。 完整的文档随GNU Info格式的包一起分发。
命令支持的选项及含义
-l, –list 列出所有块设备上的分区布局
-m, –machine 显示机器可解析的输出。
-s, –script 从不提示用户干预
-a alignment-type, –align alignment-type 为新创建的分区设置对齐,有效的alignment-type为:

none, 使用磁盘类型允许的最小对齐

cylinder, 将分区与磁柱对齐

minimal, 使用磁盘拓扑信息给出的最小对齐。此值和opt值将使用磁盘提供的布局信息,来将逻辑分区表地址与磁盘上的实际物理块对齐。 最小值是将分区正确地与物理块对齐所需的最小对齐,这可以避免性能下降

optimal, 使用磁盘拓扑信息给出的最佳对齐方式。 这”以保证最佳性能的方式“与物理块大小的倍数对齐。

-v, –version 显示版本信息。
-h, –help 显示帮助信息。
命令行参数
[device] 要使用的块设备。 如果没有给出,parted将使用它找到的第一个块设备。
[command [options]] 指定要执行的命令。 如果没有给出命令,parted将显示命令提示符。 可能的命令是:

align-check type partition
检查分区是否满足类型的对齐约束。参数type是“minimal”或“optimal”。

mklabel label-type
创建label-type的新disklabel(分区表)。参数label-type应该是以下值之一:”aix”, “amiga”, “bsd”, “dvh”, “gpt”, “loop”, “mac”, “msdos”, “pc98”, “sun”

mkpart part-type [fs-type] start end
为文件系统fs-type(如果指定)创建一个part-type分区,从start开始到end结束(默认以MB为单位)。参数part-type应是“primary”,“logical”,“ext[……]

READ MORE

「partprobe(8)」-

通知操作系统分区表变化
命令语法格式
partprobe [-d] [-s] [devices…]
命令描述
该手册页简要地介绍了partprobe命令。
命令partprobe用于通知操作系统内核分区表更改。
命令支持的选项及含义
该程序使用Unix风格的选项。
-d, –dry-run 不要更新内核分区表。
-s, –summary 显示设备和他们分区的概要信息。
-h, –help 显示帮助选项。
-v, –version 显示版本信息并退出。
相关手册
parted(8)
参考文献

man 8 partprobe, Version 3.2-21+b1

更新日志

08/28/2018 创建文章[……]

READ MORE

「PCI Utils」

PCI Utils,该软件包包含一组用于列出PCI设备的程序、检查其状态并设置其配置寄存器。
安装
从发行版的源中安装

# Ubuntu 16.04.2 LTS
apt-get install pciutils

从源码中编译安装 源码编译请参考BLFS/pciutils-3.5.1: http://www.linuxfromscratch.org/blfs/view/7.10/general/pciutils.html
安装的可执行程序文件
lspci | 显示系统中所有PCI总线及连接到它们的设备。
setpci | 用于查询、配置PCI设备。
update-pciids | 获取当前的PCI ID列表。需要用到cURL、Lynx、Wget之一。
参考文献
BLFS/pciutils-3.5.1: http://www.linuxfromscratch.org/blfs/view/7.10/general/pciutils.html[……]

READ MORE

「update-pciids」

update-pciids,下载最新的PCI ID列表。需要用到cURL、Lynx、Wget之一。如果gzip或者bzip2可用,会自动下载压缩版本的列表。
命令行语法格式
update-pciids [-q]
命令支持的选项及含义
-q 安静模式,不报告任何信息,除了错误。
相关的文件
/usr/share/misc/pci.ids 最新的PCI ID列表。
相关的命令
lspci(8), setpci(8)
参考文献

man 8 update-pciids, version pciutils-3.3.1[……]

READ MORE

「pcstat」-

内容简介
安装命令

# go get golang.org/x/sys/unix
# go get github.com/tobert/pcstat/pcstat

常见错误汇总
Exception: Failed to compile BPF text
could not open bpf map: Operation not permitted · Issue #281 · iovisor/bcc · GitHub
问题描述:

# memleak-bpfcc -a -p $(pidof remmina)
/virtual/main.c:16:1: error: could not open bpf map: Cannot allocate memory
is maps/hash map type enabled in your kernel?
BPF_TABLE(“hash”, u64, struct alloc_info_t, allocs, 1000000);
^
/virtual/include/bcc/helpers.h:75:76: note: expanded from macro ‘BPF_TABLE’
#define BPF_TABLE(_table_type, _key_type, _leaf_type, _name, _max_entries) \
^
/virtual/include/bcc/helpers.h:71:4: note: expanded from macro ‘\
BPF_F_TABLE’
}; \
^
/virtual/main.c:84:9: error: bpf_table allocs failed to open
allocs.update(&address, &info);
^
/virtual/main.c:100:37: error: bpf_table allocs failed to open
struct alloc_info_t *info = allocs.lookup(&addr);
^
3 errors generated.
Traceback (most recent call last):
File “/usr/sbin/memleak-bpfcc”, line 394, in <module>
bpf =[……]

READ MORE

「procmail」

formail is a filter that can be used to format mail into mailbox format.
lockfile is a utility that can lock a file for single use interactively or in a script.
mailstat prints a summary report of mail that has been filtered by procmail since the last time mailstat was ran.
procmail is an autonomous mail processor. It performs all the functions of an MDA (Mail Delivery Agent).
参考文献

BLFS/Procmail-3.22[……]

READ MORE

「mailstat(1)」-

显示邮件到达统计信息
命令语法格式
mailstat [-klmots] [logfile]
命令描述
命令mailstat解析”由Procmail生成“的$LOGFILE,并显示有关传递到所有文件夹的消息的摘要(总大小,平均大小,消息数)。除非使用-k选项,否则$LOGFILE将截断为零长度。
如果邮件到达则退出代码”0“;如果没有邮件到达则退出”1“。
命令支持的选项及含义
-k 保持logfile完好无损
-l 显示长格式。
-m 将任何错误合并到一行中
-o 使用旧日志文件
-t 简洁的显示格式
-s 在没有邮件的情况下保持静默
注意事项
根据您的内心定制,此程序仅作为指南提供。
参考文献

man 1 mailstat, Version 3.22-26

更新日志

10/30/2018 创建文章[……]

READ MORE

「free(1)」-

显示系统中可用及以用内存用量
命令语法格式
free [options]
命令描述
命令free显示系统中剩余、已使用的物理内存、交换分区的总量,以及被内核使用的缓冲和缓存。显示的数据来自/proc/meminfo。显示如下列:

total:总内存(/proc/meminfo下的MemTotal和SwapTotal);

used:已使用(= total – free – buffers – cache);

free:未使用的(在/proc/meminfo下MemFree和SwapFree);

shared:由tmpfs使用的(在/proc/meminfo下Shmem);

buffers:内核缓冲使用的(/proc/meminfo下的Buffers);

cache:页面缓存和slab使用的内存(在/proc/meminfo下Cached和SReclaimable);

buff/cache:= buffers + cache

available:在不使用swap时,估计可以用作应用启动的内存大小。与cache或free字段提供的数据不同,此值会计算页缓存和正在使用可回收但没有回收的内存slab。(在/proc/meminfo下的MemAvailable在3.14的内核上可用, 在2.6.27+是被模拟的, 除此以外和free一样)。

这些字段显示的数据由下面的选项控制。
命令支持的选项及含义
-h, –human 将输出自动转化为“3位数字后接单位”的形式来显示。使用的单位如下:

B = bytes
K = kibibyte
M = mebibyte
G = gibibyte
T = tebibyte
P = pebibyte

如果缺少单位,并且您有exbibyte大小的RAM或swap,则该数字为tebibytes,列可能与标题不对齐。
-w, –wide 使输出变宽,产生的列宽大于80字符。这种模式下,buffer 和 cache 分两列显示。
-l, –lohi 显示详细的高(High)低(Low)内存统计信息。
当系统物理内存较大时,超过896M的内存区域,内核就无法直接通过线性映射直接访问了,这部分内存被称作”high memory“。相应的可以映射的低端物理内存称为“low memory”。
-t, –total 附加一行,该行显示格列求和。
周期执行
-s, –seco[……]

READ MORE

「kill(1)」-

功能简述
向进程发送信号
常用命令
结束所有可杀掉的进程:

# kill -9 -1

输出信号值为 11 的信号名:

# kill -l 11

输出所有的可用信号:

# kill -L

发送默认的 SIGTERM 给指定的进程:

# kill 123 543 2341 3453

语法格式

kill [options] <pid> […]

命令描述
当未指定选项时,该命令默认发送 TERM 信号。使用 -l 或者 -L 列出可用的信号。HUP, INT, KILL, STOP, CONT, 0 这些信号特别有用。信号除了通过 -s 选项指定,可以使用另外三种方式:-9, -SIGKILL, -KILL。
负数 PID 用于选择整个进程组(包括其子进程);参见 ps(1)输出的 PGID 列。值为 -1 的 PID 具有特殊含义;它表示除了 kill 进程自身 和 init 之外的所有进程。
命令选项
<pid> […] 向列出的进程 <pid> 发送信号。
-<signal>, -s <signal>, –signal <signal> 指定要发送的信号。singnal 可以是数字,也可以是名字。信号的行为参考 signal(7) 手册。
-l, –list [signal] 列出所有的信号名。参数 signal 是可选的,如果指定 signal 参数,则会输出对应的 signal 数值,反之亦然。
-L, –table 以表格的形式列出信号名。选项-L是Linux中具有的。
附加说明
注意事项
如果 Shell(比如 BASH,DASH,CSH 等等)内建 kill 命令,则需要使用 /bin/kill 来解决冲突。
此命令符合适当的标准。选项 -L 是特定于Linux的。
相关手册
kill(2), killall(1), nice(1), pkill(1), renice(1), signal(7), skill(1)
参考文献

man 1 kill, Version 23.3.15-2[……]

READ MORE

「pgrep(1)」-

根据名称和其他属性查找进程或向进程发出信号
命令语法格式
pgrep [options] pattern
pkill [options] pattern
命令描述
命令pgrep查看当前正在运行的进程,并将与选择条件匹配的进程ID列出到标准输出。 所有条件都必须匹配。 例如,

# pgrep -u root sshd

将仅列出root所拥有,且名为sshd的进程。 另一方面,

# pgrep -u root,daemon

将列出root或者daemon拥有的进程。
命令pkill会将指定的信号(默认为SIGTERM)发送到每个进程,而不是将它们列在标准输出上。
pattern 该操作数指定扩展正则表达式(ERE),用于匹配进程名称或命令行。
命令支持的选项及含义
控制匹配行为
-signal, –signal signal 定义要发送到每个匹配进程的信号。 可以使用数字或符号信号名称。(仅限pkill)
-f, –full 该模式通常仅与进程名称匹配。 设置-f时,使用完整的命令行。
-x, –exact 仅匹配名称与模式pattern完全匹配的进程。(或指定了-f的命令行)
-i, –ignore-case 匹配进程时忽略大小写。
-g, –pgroup pgrp,… 仅匹配在列出的进程组ID中的进程。进程组为”0“表示pgrep或pkill自己的进程组。
-G, –group gid,… 仅匹配列出实际组ID的进程。 可以使用数字或符号值。
-n, –newest 仅选择最新(最近启动)的匹配进程。
-o, –oldest 仅选择最早(最近最少启动)的匹配进程。
-P, –parent ppid,… 仅匹配列出其父进程ID的进程。
-s, –session sid,… 仅匹配在进程会话ID中列出的进程。 会话ID为0被解释成pgrep或pkill自己的会话ID。
-t, –terminal term,… 仅匹配在控制终端中列出的进程。应指定终端名称,不带“/dev/”前缀。
-u, –euid euid,… 仅匹配在有效用户ID中列出的进程。 可以使用数字或符号值。
-U, –uid uid,… 仅匹配在真实用户ID中列出的进程。 可以使用数字或符号值。
-v, –inverse 否定匹配。 此选项通常用于pgrep的上下文中。 在pkill的上下文中,禁用短选项以避免意外使用该选项。
-w, –lightweight 在pgrep的上下文中显示所有线程ID[……]

READ MORE

「pidof(8)」-

找到正在运行的程序的进程ID
命令语法格式
pidof [-s] [-c] [-n] [-x] [-o omitpid[,omitpid..]] program [program..]
命令描述
命令pidof找到命名程序program的进程id(pids)。 它在标准输出上打印这些id。 此程序位于某些系统上,在run-level更改脚本中使用。尤其是当系统具有类似于System-V风格的rc结构时。 在这种情况下,这些脚本位于/etc/rc?.d中,其中的”?“是运行级别。 如果系统有一个start-stop-daemon(8)程序,应该使用的该程序。
命令支持的选项及含义
-s 查找一次 – 这指示程序只返回一个pid。
-c 仅返回使用相同根目录运行的进程ID。 非root用户将忽略此选项,因为他们将无法检查他们不拥有的进程的当前根目录。
-n 避免对位于网络文件系统(如NFS)上的所有二进制文件进行stat(2)系统函数调用。不是使用此选项,也可以设置和导出PIDOF_NETFS环境变量。
-x 脚本也是 – 这会导致程序还返回运行命名脚本的Shell的进程ID。
-o omitpid 告诉pidof忽略具有该进程ID的进程。 特殊的pid值”%PPID“可用于命名pidof程序的父进程,即调用Shell或Shell脚本。
注意事项
pidof实际上是与killall5相同的程序;程序根据调用它的名称来运行相应的功能。
当使用程序的完整路径名调用pidof时,它应该找到pid,它是相当安全的。 否则,它可能会返回正在运行的程序的pids,这些程序恰好与您之后的程序具有相同的名称,但实际上是其他程序(同名但不同路径)。 请注意,正在运行的进程的可执行文件名是使用readlink(2)计算的,因此可执行文件的符号链接也将匹配。
退出状态
0 找到至少一个带有请求名称的程序。
1 没有找到与请求的程序名匹配的程序。
相关手册
shutdown(8), init(8), halt(8), reboot(8), killall5(8)
参考文献

man 8 pidof, Version 2.88dsf-59.9

更新日志

06/17/2017 创建文章
09/27/2018 文章内容修改。[……]

READ MORE

「pkill(1)」-

向命令发送信息号
命令语法格式
pkill [options] pattern
命令描述
命令pkill是一个指向命令pgrep(1)的符号链接。命令相关的介绍参考pgrep(1)。
相关手册
ps(1), regex(7), signal(7), killall(1), skill(1), kill(1), kill(2)
参考文献

man 1 pgrep, Version pgrep from procps-ng 3.3.15

更新日志

07/30/2018 创建文章[……]

READ MORE

「pmap(1)」-

显示进程的内存映射
命令语法格式
pmap [options] pid […]
命令描述
pmap命令报告一个或多个进程的内存映射。
命令支持的选项及含义
输出信息
-x, –extended 显示扩展格式。
-X 显示比-x选项更多的详细信息。
警告:格式根据/proc/PID/smaps更改
-XX 显示由内核提供的所有信息。
-d, –device 显示设备格式。
-q, –quiet 不要显示一些页眉或页脚行。
-A, –range low,high 将结果限制在给定的低地址范围和高地址范围的范围内。 请注意,低和高参数是用逗号分隔的单个字符串。
-p, –show-path 显示映射列中文件的完整路径。
配置文件
-c, –read-rc 读取默认配置
-C, –read-rc-from file 读取指定的配置文件。
-n, –create-rc 创建一个默认的配置。
-N, –create-rc-to file 创建一个默认的配置到文件file中。
其他选项
-h, –help 显示帮助信息并退出。
-V, –version 显示版本信息并退出。
标准
没有标准适用,但是pmap看起来很像SunOS命令。
退出状态
0 成功。
1 失败。
42 所有指定的进程都没有找到。
相关手册
ps(1), pgrep(1)
参考文献

man 1 pmap, Version 23.3.15-2

更新日志

09/27/2018 创建文章[……]

READ MORE

「ps」- 报告当前进程的快照(查看系统进程状态)

常用命令
排除内核进程(即排除 pid 及 ppid 为 2 的进程):

# ps –ppid 2 -p 2 –deselect

过滤特定状态的进程,这里以运行(R)进程为例:

# ps -e -ostate,command | grep -E ‘^R’

查看在系统中的每个进程(标准语法):

# ps -e
# ps -ef
# ps -eF
# ps -ely

查看在系统中的每个进程(使用BSD语法):

# ps ax
# ps axu

打印进程树:

# ps -ejH
# ps axjf

获取线程信息:

# ps -eLf
# ps axms

获取安全信息:

# ps -eo euser,ruser,suser,fuser,f,comm,label
# ps axZ
# ps -eM

使用用户格式查看所有以ROOT运行的进程:

# ps -U root -u root u

以用户自定义格式查看所有进程:

# ps -eo pid,tid,class,rtprio,ni,pri,psr,pcpu,stat,wchan:14,comm
# ps axo stat,euid,ruid,tty,tpgid,sess,pgrp,ppid,pid,pcpu,comm
# ps -Ao pid,tt,user,fname,tmout,f,wchan

只打印syslogd的进程号:

# ps -C syslogd -o pid=

只打印 PID=42 的进程名:

# ps -q 42 -o comm=

语法格式

ps [options]

命令描述
该命令显示所选的活跃进程的信息。如果你想要所选进程与显示信息的不断更新,可以使用top(1)命令。
该版本命令接受几种选项:

(1)UNIX,可以将选项放在一起,但是必须前缀横线。比如 ps -ef
(2)BSD,可以将选项放在一起,但是必须不使用前缀横线。比如 ps ef
(3)GNU long options,长选项,前缀两个横线。比如 ps –group root

可以自由混合不同类型选项,但是可能出现冲突。由于存在多种标准与实现,该版本为了兼容,所以有些选项同义(功能一致),
注意 ps -aux 与 ps aux 不同。在POSIX与UNIX标准中,ps -aux 打印所有属于用户 ‘x’ 的进程,此外打[……]

READ MORE

「pwdx(1)」-

报告进程的当前工作目录
命令语法格式
pwdx [options] pid […]
命令支持的选项及含义
-V, –version 显示版本信息并退出。
-h, –help 显示帮助信息并退出。
注意事项
标准
没有标准适用,但pwdx看起来很像SunOS命令。
相关手册
ps(1), pgrep(1)
参考文献

man 1 pwdx, Version 23.3.15-2

更新日志

10/03/2018 创建文章[……]

READ MORE

「skill(1)」-

发送信号给进程或者报告进程状态
命令语法格式
skill [signal] [options] expression
snice [new priority] [options] expression
命令描述
这些工具已过时,且不可移植。命令语法定义不明确。 请考虑使用killall、pkill、pgrep命令。
命令skill的默认信号是TERM。 使用-l或-L列出可用信号。 特别有用的信号包括HUP,INT,KILL,STOP,CONT,0。信号可以用三种方式指定:-9 -SIGKILL -KILL。信号的含义可以参考signal(7)手册。
命令snice的默认优先级是+4。 优先级数字范围从+20(最慢)到-20(最快)。 负优先级数值限制为只能由管理用户使用。
命令支持的选项及含义
-f, –fast 快速模式。该选项未实现。
-i, –interactive 交互使用。系统会请求你批准每项操作。
-l, –list 显示所有的信号名。
-L, –table 在表格中显示所有的信号名。
-n, –no-action 没有行动;执行将发生但不实际更改系统的事件的模拟。
-v, –verbose 详细模式。解释执行了什么操作。
-w, –warnings 启用警告。该选项并未实现。
-h, –help 显示帮助信息并退出。
-V, –version 显示版本信息并退出。
进程选择选项
选择标准可以是:终端、用户、PID、命令。 以下选项可用于确保正确的解释:
-t, –tty tty 下一个表达式是一个终端(tty或者pty)
-u, –user user 下一个表达式是用户名。
-p, –pid pid 下一个表达式是进程ID数值。
-c, –command command 下一个表达式是命令名。
–ns pid 匹配与PID命名空间相同的的进程。
–nslist ns,… 列出将为–ns选项考虑的命名空间。 可用的命名空间:ipc,mnt,net,pid,user,uts。
使用示例
减慢seti和crack命令:

# snice -c seti -c crack +7

杀死PTY设备上的进程:

# skill -KILL -t /dev/pts/*

停止指定的三个用户:

# skill -STOP -u viro -u lm -u davem

如上示例。
相关手册
kill(1), kill(2), k[……]

READ MORE

「slabtop(1)」-

实时显示内核slab缓存信息
命令语法格式
slabtop [options]
命令描述
命令slabtop实时显示详细的内核slab缓存信息。 它显示按列出的排序条件之一排序的缓存列表,类似于top命令。 它还显示一个填充了slab层信息的统计标题。
命令支持的选项及含义
正常调用slabtop不需要任何选项。 但是,可以通过指定以下一个或多个标志来微调行为:
-d, –delay=N 每隔n秒刷新一次显示。 默认情况下,slabtop每三秒刷新一次显示。 要退出程序,请按q键。
-s, –sort=S 按S排序,其中S是排序标准之一。参照「SORT CRITERIA」部分。
-o, –once 显示输出一次,然后退出。
-V, –version 显示版本信息并退出。
-h, –help 显示帮助信息并退出。
排序标准(SORT CRITERIA)
以下是用于对各个slab缓存进行排序的有效排序条件,从而确定要显示的slab缓存排序。 默认排序条件是按对象数(“o”)排序。
通过按下相关字符,也可以在slabtop运行时更改排序条件。

character description header
a number of active objects ACTIVE
b objects per slab OBJ/SLAB
c cache size CACHE SIZE
l number of slabs SLABS
v number of active slabs N/A
n name NAME
o number of objects OBJS
p pages per slab N/A
s object size OBJ SIZE
u cache utilization USE

即,如果要调整排序,按下character列的字符即可。
交互命令
在使用slabtop过程中,接受用户的键盘命令。支持以下内容。 在字符的情况下,大小写两种情况都被接受。
每个有效的排序字符也被接受,以更改排序例程。 请参阅「SORT CRITERIA」部分。
<SPACEBAR> 刷新屏幕。
Q 退出程序
注意事项
目前,slabtop需要2.4+的内核(特别是版本1.1或更高版本/proc/slabinfo)。将来应支持2.2内核。
slabtop统计标题用于跟踪正在使用的slab字节数,而不是物理内存的度量。/proc/meminfo文件中的“Slab”字段跟踪有关已使用的slab物理内存的信[……]

READ MORE

「snice(1)」-

发送信号给进程或者报告进程状态
命令描述
参考skill(1)手册。
相关手册
kill(1), kill(2), killall(1), nice(1), pkill(1), renice(1), signal(7)
参考文献

man 1 skill, Version 23.3.15-2

更新日志

09/29/2018 创建文章[……]

READ MORE

「sysctl(8)」-

运行时修改内核参数
命令语法格式
sysctl [options] [variable[=value]] […]
sysctl -p [file or regexp] […]
命令描述
命令sysctl用于在运行时修改内核参数。可用的参数是/proc/sys/下列出的参数。 在Linux中,支持sysctl需要proc文件系统。 您可以使用sysctl来读取和写入sysctl数据。
命令参数
variable 要读取的key的名称。例如:kernel.ostype。 也可以接受’/’分隔符,代替’.’,比如kernel.ostype。
variable=value 要设置的key及value,请使用variable=value,其中variable是键,value是要将其设置为的值。如果值包含由Shell解析的引号或字符,则可能需要将值括在双引号中。
-a, –all 显示当前可用的所有值。
–deprecated 包含已弃用的参数到–all值列表。
-n, –values 在打印值时,禁用键名的打印。
-N, –names 仅打印键名。对于具有可编程完成的Shell可能很有用。
-e, –ignore 使用此选项可忽略有关未知key的错误。
-q, –quiet 不要将设置的值显示到标准中。
-w, –write 当所有参数都规定要设置的键时,请使用此选项。
-p[FILE], –load[=FILE] 从指定的文件或/etc/sysctl.conf(如果没有给出)加载sysctl设置。使用“-”作为FILE表示从标准输入读取数据。 使用此选项意味着sysctl的参数是文件,它们按照指定的顺序读取。参数FILE可以指定为正则表达式。
–system 从所有系统配置文件中加载设置。 从上到下按给定顺序,从以下列表中的目录中读取文件:

/run/sysctl.d/*.conf
/etc/sysctl.d/*.conf
/usr/local/lib/sysctl.d/*.conf
/usr/lib/sysctl.d/*.conf
/lib/sysctl.d/*.conf
/etc/sysctl.conf

加载给定文件名的文件后,将忽略后续目录中的任何同名文件。
-r, –pattern pattern 仅应用与pattern匹配的设置。该模式使用扩展正则表达式(ERE)语法。
-b, –binary 打印没有换行的值。
其他选项
-A 等同于-a
-d 等同于-h
-f 等同于-p[……]

READ MORE

「tload(1)」-

图形表示系统负载平均值
命令语法格式
tload [options] [tty]
命令描述
命令tload将当前系统负载平均值的图形打印到指定的tty上(如果没有指定,则打印tload进程的tty上)。
命令支持的选项及含义
-s, –scale number 缩放选项允许为显示指定垂直缩放(以图形刻度之间的字符表示);因此,较小的值表示较大的比例,反之亦然。
-d, –delay seconds 参数seconds设置图形更新之间的延迟时间(以秒为单位)。
-h, –help 显示帮助信息并退出。
-V, –version 显示版本信息并退出。
注意事项
选项-d delay设置alarm(2)的时间参数;如果指定-d 0,则警报设置为0,永远不会发送SIGALRM并更新显示。
相关文件
/proc/loadavg 负载平均信息。
相关手册
ps(1), top(1), uptime(1), w(1)
参考文献

man 1 tload, Version 23.3.15-2

更新日志

09/29/2018 创建文章[……]

READ MORE

「top」- 显示 Linux 进程

常用命令
切换排序:

# top
Shift + M %MEM
Shift + N PID
Shift + P %CPU
Shift + T TIME+

// 这些快捷键是为了兼容,新版本仅支持少部分排序快捷键
// 更多内容,参考 SORTING of task window 部分

命令过滤:

// 执行 top 命令
// 然后,按 [O] 键,输入 COMMAND=systemd 表达式,按 [ENTER] 键执行

语法格式

top -hv|-bcEHiOSs1 -d secs -n max -u|U user -p pid -o fld -w [cols]

The traditional switches `-‘ and whitespace are optional.
命令描述

The top program provides a dynamic real-time view of a running system. It can display system summary information as well as a list of processes or threads currently being managed by the Linux kernel. The types of system summary information shown and the types, order and size of information displayed for processes are all user configurable and that configuration can be made persistent across restarts.

The program provides a limited interactive interface for process manipulation as well as a much more extensive interface for personal configuration — encompassing every aspect of its operation. And while top is referred to throughout this document, you are free to name the program anything you wish. That new name, possibly an alias, will then be reflected on top’s displa[……]

READ MORE

「uptime(1)」-

报告系统运行时间
命令语法格式
uptime [options]
命令描述
命令uptime输出一行信息,显示如下字段:当前时间、系统运行的时间、当前登录的用户数、过去1,5,15分钟的系统负载平均值。
这与w(1)显示的标题行中包含的信息相同。
系统负载平均值是处于可运行或不可中断状态的平均进程数。 处于可运行状态的进程要么使用CPU,要么等待使用CPU。 处于不可中断状态的进程正在等待某些I/O访问,例如等待磁盘。平均值是在三个时间间隔内取得的。 对于系统中的CPU数量,负载平均值没有标准化,因此平均负载为”1“表示:在单个CPU系统上,表示一直在加载;在4个CPU系统上,这意味着它在75%的时间内处于空闲状态。
命令支持的选项及含义
-p, –pretty 以美化的格式显示启动时间。
-s, –since 以yyyy-mm-dd HH:MM:SS格式,显示系统启动时间。
-V, –version 显示版本信息并退出。
-h, –help 显示帮助信息并退出。
相关文件
/var/run/utmp 当前登录系统的用户信息。
/proc 进程信息。
相关手册
ps(1), top(1), utmp(5), w(1)
参考文献

man 1 uptime, Version 23.3.15-2

更新日志

09/29/2018 创建文章[……]

READ MORE