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 ls
1.txt ch2
real 0m0.002s
user 0m0.000s
sys 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.48
System time (seconds): 0.22
Percent of CPU this job got: 78%
Elapsed (wall clock) time (h:mm:ss or m:ss): 0:07.31
Average shared text size (kbytes): 0
Average unshared data size (kbytes): 0
Average stack size (kbytes): 0
Average total size (kbytes): 0
Maximum resident set size (kbytes): 217696
Average resident set size (kbytes): 0
Major (requiring I/O) page faults: 0
Minor (reclaiming a frame) page faults: 52893
Voluntary context switches: 76
Involuntary context switches: 24
Swaps: 0
File system inputs: 16
File system outputs: 13336
Socket messages sent: 0
Socket messages received: 0
Signals delivered: 0
Page size (bytes): 4096
Exit status: 0
xargs
xargs(英文全拼: eXtended ARGuments)是给命令传递参数的一个过滤器,也是组合多个命令的一个工具。
xargs 可以将管道或标准输入(stdin)数据转换成命令行参数,也能够从文件的输出中读取数据。
xargs 也可以将单行或多行文本输入转换为其他格式,例如多行变单行,单行变多行。
xargs 默认的命令是 echo,这意味着通过管道传递给 xargs 的输入将会包含换行和空白,不过通过 xargs 的处理,换行和空白将被空格取代。
find ./ -name "123123123" | xargs -d "\n" rm -rf
find ./ -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 sudo
13359
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 用户定义的信号 1
SIGUSR2 31,12,17 A 用户定义的信号 2
SIGCHLD 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 来降低优先级。