exec

exec 执行命令

shell的内建命令exec将并不启动新的shell,而是用要被执行命令替换当前的shell进程,并且将老进程的环境清理掉,而且exec命令后的其它命令将不再执行。
因此,如果你在一个shell里面,执行exec ls那么,当列出了当前目录后,这个shell就自己退出了,因为这个shell进程已被替换为仅仅执行ls命令的一个进程,执行结束自然也就退出了。[

](https://blog.csdn.net/qq_31186123/article/details/82190776)

exec 文件重定向

当exec命令来对文件描述符操作的时候,就不会替换shell,而且操作完成后,还会继续执行接下来的命令。
exec 0<filenasme

exec 1>filename
标准输入输出重定向

time

Linux time命令的用途,在于量测特定指令执行时所需消耗的时间及系统资源等资讯。
其中第4行”real”为实际时间,第5行”user”为用户CPU时间,第6行”sys”为系统CPU时间。

  1. [root@ip-172-16-1-245 ec2-user]# time ls
  2. 1.txt ch2
  3. real 0m0.002s
  4. user 0m0.000s
  5. sys 0m0.003s
  6. [root@ip-172-16-1-245 ec2-user]# /usr/bin/time -v yum update -y
  7. /usr/lib/python3.6/site-packages/requests/__init__.py:91: RequestsDependencyWarning: urllib3 (1.26.6) or chardet (3.0.4) doesn't match a supported version!
  8. RequestsDependencyWarning)
  9. Updating Subscription Management repositories.
  10. Last metadata expiration check: 1:20:43 ago on Fri 03 Sep 2021 01:15:43 AM UTC.
  11. Dependencies resolved.
  12. Nothing to do.
  13. Complete!
  14. Command being timed: "yum update -y"
  15. User time (seconds): 5.48
  16. System time (seconds): 0.22
  17. Percent of CPU this job got: 78%
  18. Elapsed (wall clock) time (h:mm:ss or m:ss): 0:07.31
  19. Average shared text size (kbytes): 0
  20. Average unshared data size (kbytes): 0
  21. Average stack size (kbytes): 0
  22. Average total size (kbytes): 0
  23. Maximum resident set size (kbytes): 217696
  24. Average resident set size (kbytes): 0
  25. Major (requiring I/O) page faults: 0
  26. Minor (reclaiming a frame) page faults: 52893
  27. Voluntary context switches: 76
  28. Involuntary context switches: 24
  29. Swaps: 0
  30. File system inputs: 16
  31. File system outputs: 13336
  32. Socket messages sent: 0
  33. Socket messages received: 0
  34. Signals delivered: 0
  35. Page size (bytes): 4096
  36. Exit status: 0

xargs

xargs(英文全拼: eXtended ARGuments)是给命令传递参数的一个过滤器,也是组合多个命令的一个工具。
xargs 可以将管道或标准输入(stdin)数据转换成命令行参数,也能够从文件的输出中读取数据。
xargs 也可以将单行或多行文本输入转换为其他格式,例如多行变单行,单行变多行。
xargs 默认的命令是 echo,这意味着通过管道传递给 xargs 的输入将会包含换行和空白,不过通过 xargs 的处理,换行和空白将被空格取代。

  1. find ./ -name "123123123" | xargs -d "\n" rm -rf
  2. find ./ -name "123123123" -exec rm -rf {} \;

类似xargs 的是反引号``

``

Text within backticks is treated as a separate command whose results are substituted on the command line.

  1. rm `find ./ -name "*~"`

pidof

pidof 命令用于查询某个服务的PID,每个进程的PID是唯一的,可以区别于不同的进程。

  1. [root@ip-172-31-1-128 ~]# pidof sudo
  2. 13359

kill & Killall

kill 命令可以终止某个进程号,因为一个服务可能对应多个进程,所以该命令不可以用来结束某个服务。
killall 命令可以用于结束某个服务所对应的所有进程。

  1. root@linux Desktop]# kill 1708
  2. [root@linux Desktop]# killall sshd

信号 值 动作 说明 SIGHUP 1 A 在控制终端上是挂起信号, 或者控制进程结束 SIGINT 2 A 从键盘输入的中断(ctrl-C 解释成一个SIGINT 信号,记在该进程PCB中,也可以发送一个SIGINT信号给该进程) SIGQUIT 3 C 从键盘输入的退出(ctrl-) SIGILL 4 C 无效硬件指令

  1. SIGABRT 6 C 非正常终止, 可能来自 abort(3)
  2. SIGFPE 8 C 浮点运算例外(硬件异常产生信号,这些条件由硬件检测到并通知内核,然后内核向当前进程发送适当的信号。例如当前进程执行了除以0的指令,CPU的运算单元会产生异常,内核将这个异常解释为SIGFPE信号发送给进程)
  3. SIGKILL 9 AEF 杀死进程信号
  4. SIGSEGV 11 C 无效的内存引用(比如当前进程访问了非法内存地址,MMU会产生异常内核将解释成这个异常为SIGSEGV)
  5. SIGPIPE 13 A 管道中止: 写入无人读取的管道(向读端己关闭的管道写数据时产生SIGPIPE)
  6. SIGALRM 14 A 来自 alarm(2) 的超时信号(当内核检测到某种软件条件发生时也可以通过信号通知进程,例如闹钟超时产生SIGALRM信号,向读端己关闭的管道写数据时产生SIGPIPE)
  7. SIGTERM 15 A 终止信号(如果不明确指定信号则发送SIGTERM)
  8. SIGUSR1 30,10,16 A 用户定义的信号 1
  9. SIGUSR2 31,12,17 A 用户定义的信号 2
  10. SIGCHLD 20,17,18 B 子进程结束或停止
  11. SIGCONT 19,18,25 继续停止的进程
  12. SIGSTOP 17,19,23 DEF 停止进程
  13. SIGTSTP 18,20,24 D 终端上发出的停止信号(Ctrl-Z)
  14. SIGTTIN 21,21,26 D 后台进程试图从控制终端(tty)输入
  15. SIGTTOU 22,22,27 D 后台进程试图在控制终端(tty)输出

nice

nice 的值范围从-20 到+19,默认值为 0(参见图 6-1)。高 nice 值为低优先级,低 nice 值为高优先级(当 您对其他用户和进程不太友好时)。当进程启动时,它继承其父进程的 nice 值。进程的所有者可以降低进程 的优先级,但不能增加其优先级。当然,超级用户或根用户可以随意将 nice 值设置为他们喜欢的任何值。
image.png

  1. nice -n -10 /bin/slowprocess

renice

renice 命令采用介于-20 和 19 之间的绝对值,并将优先级设置为该特定级别,而不是从其开始的级别 增加或减少。此外,renice 需要您所针对的进程的 PID 而不是名字。因此,如果 slowprocess 在您的系统 上使用过多的资源 ,并且你想给它一个较低的优先级,从而允许其他进程具有更高的优先级和更多的资源, 你可以重新设置 slowprocess(PID 为 6996)并给出一个更高的值

  1. renice 20 6996

与 nice 一样,只有 root 用户可以将进程重新设置为负值以赋予其更高的优先级,但任何用户都可以使 用 renice 来降低优先级。