jobs
显示作业的状态。
概要
jobs [-lnprs] [jobspec ...]
jobs -x command [args]
主要用途
- 显示作业的状态。
- 列出活动的作业。
- 列出停止的作业。
选项
-l 在作业信息中额外的列出PID。
-n 只列出最近一次通知以来状态变更的作业。
-p 只列出PID。
-r 只输出处于运行状态的作业。
-s 只输出处于停止状态的作业。
返回值
返回状态为成功除非给出了非法选项、执行出现错误。
如果使用jobs -x command [args]形式执行,那么返回值为command的退出状态。
例子
[user2@pc] ssh 192.168.1.4
pc@192.168.1.4's password:
# 此时按下ctrl+z使得交互停止。
[1]+ Stopped ssh 192.168.1.4
[user2@pc] sleep 60 &
[2] 13338
[user2@pc] jobs
[1]- Stopped ssh 192.168.1.4
[2] Running sleep 60 &
[user2@pc] jobs -l
[1]- 12927 Stopped ssh 192.168.1.4
[2] 13338 Running sleep 60 &
[user2@pc] jobs -p
12927
13338
[user2@pc] jobs -s
[1]- Stopped ssh 192.168.1.4
[user2@pc] jobs -r
[2] Running sleep 60 &
[user2@pc] kill -9 12927
[2] Done sleep 60
[user2@pc] jobs -n -l
[1]+ 12927 Killed ssh 192.168.1.4
[user2@pc] jobs -n -l
注意
bash的作业控制命令包括bg fg kill wait disown suspend。- 该命令需要
set选项monitor处于开启状态时才能执行;查看作业控制状态:输入set -o查看monitor行;执行set -o monitor或set -m开启该选项。 - 该命令是bash内建命令,相关的帮助信息请查看
help命令。
joe
强大的纯文本编辑器
补充说明
joe命令 是一款功能强大的纯文本编辑器,拥有众多编写程序和文本的优良特性。
语法
joe(选项)(参数)
选项
-force:强制在最后一行的结尾处加上换行符号;
-lines<行数>:设置行数;
-lightoff:选取的区块在执行完区块命令后,就会恢复成原来的状态;
-autoindent:自动缩排;
-backpath:<目录>:指定备份文件的目录;
-beep:编辑时,若有错误即发出哔声;
-columns<栏位>:设置栏数;
-csmode:可执行连续查找模式;
-dopadding:是程序跟tty间存在缓冲区;
-exask:在程序中,执行“Ctrl+k+x”时,会先确认是否要保存文件;
-force:强制在最后一行的结尾处加上换行符号;
-help:执行程序时一并显示帮助;
-keepup:在进入程序后,画面上方为状态列;
-marking:在选取区块时,反白区块会随着光标移动;
-mid:当光标移出画面时,即自动卷页,使光标回到中央;
-nobackups:不建立备份文件;
-nonotice:程序执行时,不显示版本信息;
-nosta:程序执行时,不显示状态列;
-noxon:尝试取消“Ctrl+s”和“Ctrl+q”键的功能;
-orphan:若同时开启一个以上的文件,则其他文件会置于独立的缓冲区,而不会另外开启编辑区;
-pg<行数>:按“PageUp”或“PageDown”换页时,所要保留前一页的行数;
-skiptop<行数>:不使用屏幕上方指定的行数。
参数
文件:指定要编辑的文件。
join
两个文件中指定栏位内容相同的行连接起来
补充说明
join命令 用来将两个文件中,制定栏位内容相同的行连接起来。找出两个文件中,指定栏位内容相同的行,并加以合并,再输出到标准输出设备。
语法
join(选项)(参数)
选项
-a<1或2>:除了显示原来的输出内容之外,还显示指令文件中没有相同栏位的行;
-e<字符串>:若[文件1]与[文件2]中找不到指定的栏位,则在输出中填入选项中的字符串;
-i或--ignore-case:比较栏位内容时,忽略大小写的差异;
-o<格式>:按照指定的格式来显示结果;
-t<字符>:使用栏位的分割字符;
-v<1或2>:更-a相同,但是只显示文件中没有相同栏位的行;
-1<栏位>:连接[文件1]指定的栏位;
-2<栏位>:连接[文件2]指定的栏位。
参数
- 文件1:要进行合并操作的第1个文件参数;
- 文件2:要进行合并操作的第2个文件参数。
常见用法
把两个文件制定栏位内容相同的行连接起来:
[root@localhost ~]# cat name
1 xiaoming
2 xiaowang
3 xiaoliu
[root@localhost ~]# cat city
1 beijing beijing
2 hubei wuhan
3 hunan changsha
# city文件在后,则拼接在后,如果city文件在前,则name文件拼接在后。
[root@localhost ~]# join name city
1 xiaoming beijing beijing
2 xiaowang hubei wuhan
3 xiaoliu hunan changsha
把两个文件指定列拼接起来:
# 把name文件的第2列和city文件的第3列拼接起来
[root@localhost ~]# join -o 1.2 2.3 name city
xiaoming beijing
xiaowang wuhan
xiaoliu changsha
journalctl
检索 systemd 日志,是 CentOS 7 才有的工具。
语法
journalctl [OPTIONS...] [MATCHES...]
选项
Flags:
--system # 显示系统日志
--user # 显示当前用户的用户日志
-M --machine=CONTAINER # 在本地容器上操作
-S --since=DATE # 显示不早于指定日期的条目
-U --until=DATE # 显示不晚于指定日期的条目
-c --cursor=CURSOR # 显示从指定光标开始的条目
--after-cursor=CURSOR # 在指定光标后显示条目
--show-cursor # 在所有条目之后打印光标
-b --boot[=ID] # 显示当前启动或指定启动
--list-boots # 显示有关已记录引导的简洁信息
-k --dmesg # 显示当前启动的内核消息日志
-u --unit=UNIT # 显示指定单元的日志
-t --identifier=STRING # 显示具有指定系统日志标识符的条目
-p --priority=RANGE # 显示具有指定优先级的条目
-e --pager-end # 在pager中立即跳转到末尾
-f --follow # 关注期刊
-n --lines[=INTEGER] # 要显示的日志条目数
--no-tail # 显示所有行,即使在跟随模式下
-r --reverse # 首先显示最新的条目
-o --output=STRING # 更改日志输出模式 (short, short-iso,
short-precise, short-monotonic, verbose,
export, json, json-pretty, json-sse, cat)
--utc # 以协调世界时 (UTC) 表示的时间
-x --catalog # 在可用的情况下添加消息说明
--no-full # Ellipsize 字段
-a --all # 显示所有字段,包括长的和不可打印的
-q --quiet # 不显示特权警告
--no-pager # 不要将输出通过管道传输到寻呼机
-m --merge # 显示所有可用期刊的条目
-D --directory=PATH # 显示目录中的日志文件
--file=PATH # 显示日志文件
--root=ROOT # 对根目录下的目录文件进行操作
--interval=TIME # 更改 FSS 密封键的时间间隔
--verify-key=KEY # 指定FSS验证密钥
--force # 使用 --setup-keys 覆盖 FSS 密钥对
Commands:
-h --help # 显示此帮助文本
--version # 显示包版本
-F --field=FIELD # 列出指定字段的所有值
--new-id128 # 生成新的 128 位 ID
--disk-usage # 显示所有日志文件的总磁盘使用情况
--vacuum-size=BYTES # 将磁盘使用量减少到指定大小以下
--vacuum-time=TIME # 删除早于指定日期的日志文件
--flush # 将所有日志数据从 /run 刷新到 /var
--header # 显示期刊头信息
--list-catalog # 显示目录中的所有消息 ID
--dump-catalog # 在消息目录中显示条目
--update-catalog # 更新消息目录数据库
--setup-keys # 生成新的 FSS 密钥对
--verify # 验证日志文件的一致性
实例
过滤输出
jq
一个灵活的轻量级命令行JSON处理器
补充说明
jq 是 stedolan 开发的一个轻量级的和灵活的命令行JSON处理器,源码请参考 jq 项目主页
jq 用于处理JSON输入,将给定过滤器应用于其JSON文本输入并在标准输出上将过滤器的结果生成为JSON。
最简单的过滤器是.,它将jq的输入未经修改地复制到其输出中(格式设置除外)。
请注意,jq 当前仅支持64位双精度浮点数(IEEE754)。
安装
# Debian系,如 Ubuntu
sudo apt-get install jq
# RedHat系, 如 CentOS
yum install jq
语法
jq [options] <jq filter> [file...]
jq [options] --args <jq filter> [strings...]
jq [options] --jsonargs <jq filter> [JSON_TEXTS...]
选项
-c 紧凑而不是漂亮的输出;
-n 使用`null`作为单个输入值;
-e 根据输出设置退出状态代码;
-s 将所有输入读取(吸取)到数组中;应用过滤器;
-r 输出原始字符串,而不是JSON文本;
-R 读取原始字符串,而不是JSON文本;
-C 为JSON着色;
-M 单色(不要为JSON着色);
-S 在输出上排序对象的键;
--tab 使用制表符进行缩进;
--arg a v 将变量$a设置为value<v>;
--argjson a v 将变量$a设置为JSON value<v>;
--slurpfile a f 将变量$a设置为从<f>读取的JSON文本数组;
--rawfile a f 将变量$a设置为包含<f>内容的字符串;
--args 其余参数是字符串参数,而不是文件;
--jsonargs 其余的参数是JSON参数,而不是文件;
-- 终止参数处理;
例子
.: 以漂亮的方式输出
jwhois
whois 客户端服务
补充说明
jwhois searches Whois servers for the object on the command line.The host to query is taken from a global configuration file, a configuration file specified on the command line, or selected directly on the command line.
语法
jwhois [选项]
选项
--version display version number and patch level
--help display this help
-v, --verbose verbose debug output
-c FILE, --config=FILE use FILE as configuration file
-h HOST, --host=HOST explicitly query HOST
-n, --no-redirect disable content redirection
-s, --no-whoisservers disable whois-servers.net service support
-a, --raw disable reformatting of the query
-i, --display-redirections display all redirects instead of hiding them
-p PORT, --port=PORT use port number PORT (in conjunction with HOST)
-r, --rwhois force an rwhois query to be made
--rwhois-display=DISPLAY sets the display option in rwhois queries
--rwhois-limit=LIMIT sets the maximum number of matches to return
注:以上英文部分寻求网友协助翻译,翻译结果可发送至 sa(at)linuxde.net,谢谢!
kernelversion
打印当前内核的主版本号
补充说明
kernelversion命令 用于打印当前内核的主版本号。
语法
kernelversion
kexec
从当前正在运行的内核引导到一个新内核
补充说明
kexec命令 是Linux内核的一个补丁,让您可以从当前正在运行的内核直接引导到一个新内核。在上面描述的引导序列中,kexec跳过了整个引导装载程序阶段(第一部分)并直接跳转到我们希望引导到的内核。不再有硬件的重启,不再有固件操作,不再涉及引导装载程序。完全避开了引导序列中最弱的一环 – 固件。这一功能部件带来的最大益处在于,系统现在可以极其快速地重新启动。
kexec的好处: 要求高可用性的系统,以及需要不断重新启动系统的内核开发人员,都将受益于kexec。因为 kexec跳过了系统重新启动过程中最耗时的部分(也就是固件初始化硬件设备的阶段),所以重新启动变得非常快,可用性得到了提高。
语法
kexec(选项)
选项
-l:指定内核映像文件;
-e:允许当前被加载的内核;
-f:强制立即调用系统调用“kexec”,而不调用“shutdown”;
-t:指定新内核的类型;
-u:卸载当前的kexec目标内核。
kill
发送信号到进程。
目录
内建命令
概要
kill [-s sigspec | -n signum | -sigspec] pid | jobspec ...
kill -l [sigspec]
主要用途
- 发送信号到作业或进程(可以为多个)。
- 列出信号。
选项
-s sig 信号名称。
-n sig 信号名称对应的数字。
-l 列出信号名称。如果在该选项后提供了数字那么假设它是信号名称对应的数字。
-L 等价于-l选项。
参数
pid:进程ID
jobspec:作业标识符
返回值
返回状态为成功除非给出了非法选项、执行出现错误。
例子
[user2@pc] kill -l 9
KILL
# 列出所有信号名称:
[user2@pc] kill -l
1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL
5) SIGTRAP 6) SIGABRT 7) SIGBUS 8) SIGFPE
9) SIGKILL 10) SIGUSR1 11) SIGSEGV 12) SIGUSR2
13) SIGPIPE 14) SIGALRM 15) SIGTERM 16) SIGSTKFLT
17) SIGCHLD 18) SIGCONT 19) SIGSTOP 20) SIGTSTP
21) SIGTTIN 22) SIGTTOU 23) SIGURG 24) SIGXCPU
25) SIGXFSZ 26) SIGVTALRM 27) SIGPROF 28) SIGWINCH
29) SIGIO 30) SIGPWR 31) SIGSYS 34) SIGRTMIN
35) SIGRTMIN+1 36) SIGRTMIN+2 37) SIGRTMIN+3 38) SIGRTMIN+4
39) SIGRTMIN+5 40) SIGRTMIN+6 41) SIGRTMIN+7 42) SIGRTMIN+8
43) SIGRTMIN+9 44) SIGRTMIN+10 45) SIGRTMIN+11 46) SIGRTMIN+12
47) SIGRTMIN+13 48) SIGRTMIN+14 49) SIGRTMIN+15 50) SIGRTMAX-14
51) SIGRTMAX-13 52) SIGRTMAX-12 53) SIGRTMAX-11 54) SIGRTMAX-10
55) SIGRTMAX-9 56) SIGRTMAX-8 57) SIGRTMAX-7 58) SIGRTMAX-6
59) SIGRTMAX-5 60) SIGRTMAX-4 61) SIGRTMAX-3 62) SIGRTMAX-2
63) SIGRTMAX-1 64) SIGRTMAX
# 下面是常用的信号。
# 只有第9种信号(SIGKILL)才可以无条件终止进程,其他信号进程都有权利忽略。
HUP 1 终端挂断
INT 2 中断(同 Ctrl + C)
QUIT 3 退出(同 Ctrl + \)
KILL 9 强制终止
TERM 15 终止
CONT 18 继续(与STOP相反,fg/bg命令)
STOP 19 暂停(同 Ctrl + Z)
# 以下发送KILL信号的形式等价。当然还有更多的等价形式,在此不一一列举了。
[user2@pc] kill -s SIGKILL PID
[user2@pc] kill -s KILL PID
[user2@pc] kill -n 9 PID
[user2@pc] kill -9 PID
[user2@pc] sleep 90 &
[1] 178420
# 终止作业标识符为1的作业。
[user2@pc] kill -9 %1
[user2@pc] jobs -l
[1]+ 178420 KILLED ssh 192.168.1.4
[user2@pc] sleep 90 &
[1] 181357
# 发送停止信号。
[user2@pc] kill -s STOP 181357
[user2@pc] jobs -l
[1]+ 181537 Stopped (signal) sleep 90
# 发送继续信号。
[user2@pc] kill -s CONT 181357
[user2@pc] jobs -l
[1]+ 181537 Running sleep 90 &
注意
bash的作业控制命令包括bg fg kill wait disown suspend。- 该命令是bash内建命令,相关的帮助信息请查看
help命令。
外部命令
概要
kill [-signal|-s signal|-p] [-q value] [-a] [--] pid|name...
kill -l [number] | -L
主要用途
-
发送信号到进程(可以为多个)。
killall
使用进程的名称来杀死一组进程
补充说明
killall命令 使用进程的名称来杀死进程,使用此指令可以杀死一组同名进程。我们可以使用kill命令杀死指定进程PID的进程,如果要找到我们需要杀死的进程,我们还需要在之前使用ps等命令再配合grep来查找进程,而killall把这两个过程合二为一,是一个很好用的命令。
语法
killall(选项)(参数)
选项
-e:对长名称进行精确匹配;
-l:忽略大小写的不同;
-p:杀死进程所属的进程组;
-i:交互式杀死进程,杀死进程前需要进行确认;
-l:打印所有已知信号列表;
-q:如果没有进程被杀死。则不输出任何信息;
-r:使用正规表达式匹配要杀死的进程名称;
-s:用指定的进程号代替默认信号“SIGTERM”;
-u:杀死指定用户的进程。
参数
进程名称:指定要杀死的进程名称。
实例
# 杀死所有同名进程
killall vi
# 指定向进程发送的信号
killall -9 vi
# 0信号表示不向进程发送信号, 可通过返回值判断进程是否存在, 0(存在)1(不存在)
killall -0 vi
echo $?