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时间。
[root@ip-172-16-1-245 ec2-user]# time ls1.txt ch2real 0m0.002suser 0m0.000ssys 0m0.003s[root@ip-172-16-1-245 ec2-user]# /usr/bin/time -v yum update -y/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!RequestsDependencyWarning)Updating Subscription Management repositories.Last metadata expiration check: 1:20:43 ago on Fri 03 Sep 2021 01:15:43 AM UTC.Dependencies resolved.Nothing to do.Complete!Command being timed: "yum update -y"User time (seconds): 5.48System time (seconds): 0.22Percent of CPU this job got: 78%Elapsed (wall clock) time (h:mm:ss or m:ss): 0:07.31Average shared text size (kbytes): 0Average unshared data size (kbytes): 0Average stack size (kbytes): 0Average total size (kbytes): 0Maximum resident set size (kbytes): 217696Average resident set size (kbytes): 0Major (requiring I/O) page faults: 0Minor (reclaiming a frame) page faults: 52893Voluntary context switches: 76Involuntary context switches: 24Swaps: 0File system inputs: 16File system outputs: 13336Socket messages sent: 0Socket messages received: 0Signals delivered: 0Page size (bytes): 4096Exit status: 0
xargs
xargs(英文全拼: eXtended ARGuments)是给命令传递参数的一个过滤器,也是组合多个命令的一个工具。
xargs 可以将管道或标准输入(stdin)数据转换成命令行参数,也能够从文件的输出中读取数据。
xargs 也可以将单行或多行文本输入转换为其他格式,例如多行变单行,单行变多行。
xargs 默认的命令是 echo,这意味着通过管道传递给 xargs 的输入将会包含换行和空白,不过通过 xargs 的处理,换行和空白将被空格取代。
find ./ -name "123123123" | xargs -d "\n" rm -rffind ./ -name "123123123" -exec rm -rf {} \;
类似xargs 的是反引号``
``
Text within backticks is treated as a separate command whose results are substituted on the command line.
rm `find ./ -name "*~"`
pidof
pidof 命令用于查询某个服务的PID,每个进程的PID是唯一的,可以区别于不同的进程。
[root@ip-172-31-1-128 ~]# pidof sudo13359
kill & Killall
kill 命令可以终止某个进程号,因为一个服务可能对应多个进程,所以该命令不可以用来结束某个服务。
killall 命令可以用于结束某个服务所对应的所有进程。
root@linux Desktop]# kill 1708[root@linux Desktop]# killall sshd
信号 值 动作 说明 SIGHUP 1 A 在控制终端上是挂起信号, 或者控制进程结束 SIGINT 2 A 从键盘输入的中断(ctrl-C 解释成一个SIGINT 信号,记在该进程PCB中,也可以发送一个SIGINT信号给该进程) SIGQUIT 3 C 从键盘输入的退出(ctrl-) SIGILL 4 C 无效硬件指令
SIGABRT 6 C 非正常终止, 可能来自 abort(3)SIGFPE 8 C 浮点运算例外(硬件异常产生信号,这些条件由硬件检测到并通知内核,然后内核向当前进程发送适当的信号。例如当前进程执行了除以0的指令,CPU的运算单元会产生异常,内核将这个异常解释为SIGFPE信号发送给进程)SIGKILL 9 AEF 杀死进程信号SIGSEGV 11 C 无效的内存引用(比如当前进程访问了非法内存地址,MMU会产生异常内核将解释成这个异常为SIGSEGV)SIGPIPE 13 A 管道中止: 写入无人读取的管道(向读端己关闭的管道写数据时产生SIGPIPE)SIGALRM 14 A 来自 alarm(2) 的超时信号(当内核检测到某种软件条件发生时也可以通过信号通知进程,例如闹钟超时产生SIGALRM信号,向读端己关闭的管道写数据时产生SIGPIPE)SIGTERM 15 A 终止信号(如果不明确指定信号则发送SIGTERM)SIGUSR1 30,10,16 A 用户定义的信号 1SIGUSR2 31,12,17 A 用户定义的信号 2SIGCHLD 20,17,18 B 子进程结束或停止SIGCONT 19,18,25 继续停止的进程SIGSTOP 17,19,23 DEF 停止进程SIGTSTP 18,20,24 D 终端上发出的停止信号(Ctrl-Z)SIGTTIN 21,21,26 D 后台进程试图从控制终端(tty)输入SIGTTOU 22,22,27 D 后台进程试图在控制终端(tty)输出
nice
nice 的值范围从-20 到+19,默认值为 0(参见图 6-1)。高 nice 值为低优先级,低 nice 值为高优先级(当 您对其他用户和进程不太友好时)。当进程启动时,它继承其父进程的 nice 值。进程的所有者可以降低进程 的优先级,但不能增加其优先级。当然,超级用户或根用户可以随意将 nice 值设置为他们喜欢的任何值。
nice -n -10 /bin/slowprocess
renice
renice 命令采用介于-20 和 19 之间的绝对值,并将优先级设置为该特定级别,而不是从其开始的级别 增加或减少。此外,renice 需要您所针对的进程的 PID 而不是名字。因此,如果 slowprocess 在您的系统 上使用过多的资源 ,并且你想给它一个较低的优先级,从而允许其他进程具有更高的优先级和更多的资源, 你可以重新设置 slowprocess(PID 为 6996)并给出一个更高的值
renice 20 6996
与 nice 一样,只有 root 用户可以将进程重新设置为负值以赋予其更高的优先级,但任何用户都可以使 用 renice 来降低优先级。
