linuxexec命令
⑴ linux系统中,递归删除目录的命令是
rm 递归删除 特定文件夹
使用规则:
rm -rf 目录名字
-r 向下递归,不管有多少级目录,一并删除
-f 直接强行删除,没有任何提示
linux下递归删除目录下所有指定的文件
find . -name '*.*' -type f -print -exec rm -rf {} ;
(1) "." 表示从当前目录开始递归查找
(2) “ -name '*.*' "根据名称来查找,要查找所有以.*结尾的文件夹或者文件
(3) " -type f "查找的类型为文件
(4) "-print" 输出查找的文件目录名
(5) exec选项后边跟着一个所要执行的命令,表示将find出来的文件或目录执行该命令。《Linux就该这么学》 一起学习更多linux知识。
exec选项后面跟随着所要执行的命令或脚本,然后是一对儿{},一个空格和一个,最后是一个分号
⑵ linux shell脚本 解释exec
这是一个if结构
判断 /var/log/x.log 是否存在
然后执行exec命令,将执行输出的标准信息和错误信息都输出到 /var/log/x.log 文件
⑶ linux中system和exec函数的区别
system是用shell来调用程序=fork+exec+waitpid,而exec是直接让你的程序代替用来的程序运行。
system 是在单独的进程中执行命令,完了还会回到你的程序中。而exec函数是直接在你的进程中执行新的程序,新的程序会把你的程序覆盖,除非调用出错,否则你再也回不到exec后面的代码,就是说你的程序就变成了exec调用的那个程序了。
看一下,下面的例子.
例子1
---------------------------------
system("your_program");
printf("You can see me! ");
---------------------------------
例子2
---------------------------------
exec("your_program");
printf("You can't see me! ");
---------------------------------
在例子1中,在你的程序执行完毕以后,会执行printf语句。
在例子2中,由于exec将程序your_program代替了本身,因此程序不再会执行printf语句。
在Linux下,exec通常会和fork语句一起用。
看下面的这个例子
--------------------------------------------
pid_t pid = fork();
if (pid < 0) {
printf(“fork error!”);
exit(-1);
} else if (pid == 0) {
//这里是子进程
printf("I'm son! ");
//执行其它的程序
exec("your_program");
} else {
//这里是父进程
printf("i'm father!");
wait();//等待子进程结束后返回
exit(0);
}
⑷ linux中fork,source和exec的区别
exec和source都属于bash内部命令(builtins commands),在bash下输入man exec或man source可以查看所有的内部命令信息。
bash shell的命令分为两类:外部命令和内部命令。外部命令是通过系统调用或独立的程序实现的,如sed、awk等等。内部命令是由特殊的文件格式(.def)所实现,如cd、history、exec等等。
在说明exec和source的区别之前,先说明一下fork的概念。
fork是linux的系统调用,用来创建子进程(child process)。子进程是父进程(parent process)的一个副本,从父进程那里获得一定的资源分配以及继承父进程的环境。子进程与父进程唯一不同的地方在于pid(process id)。
环境变量(传给子进程的变量,遗传性是本地变量和环境变量的根本区别)只能单向从父进程传给子进程。不管子进程的环境变量如何变化,都不会影响父进程的环境变量。
shell script:
有两种方法执行shell scripts,一种是新产生一个shell,然后执行相应的shell scripts;一种是在当前shell下执行,不再启用其他shell。
新产生一个shell然后再执行scripts的方法是在scripts文件开头加入以下语句
#!/bin/sh
一般的script文件(.sh)即是这种用法。这种方法先启用新的sub-shell(新的子进程),然后在其下执行命令。
另外一种方法就是上面说过的source命令,不再产生新的shell,而在当前shell下执行一切命令。
source:
source命令即点(.)命令。
在bash下输入man source,找到source命令解释处,可以看到解释"Read and execute commands from filename in the current shell environment and ..."。从中可以知道,source命令是在当前进程中执行参数文件中的各个命令,而不是另起子进程(或sub-shell)。source filename or .filename 执行filename中的命令。
exec:
在bash下输入man exec,找到exec命令解释处,可以看到有"No new process is created."这样的解释,这就是说exec命令不产生新的子进程。那么exec与source的区别是什么呢?
exec命令在执行时会把当前的shell process关闭,然后换到后面的命令继续执行。
======================================================================================================================
下面我们写个脚本来测试一下,这样你就会很容易的读懂我上面所说的东西~
1.sh
1
2
3
#!/bin/bashA=Becho "PID for 1.sh before exec/source/fork:
"exportAecho"1.sh:$Ais$A"case$1inexec)echo"usingexec..."exec./2.sh;;source)echo"usingsource..."../2.sh;;∗)echo"usingforkbydefault..."./2.sh;;esacecho"PIDfor1.shafterexec/source/fork:
"echo "1.sh: \$A is $A"
2.sh
1
2
3
4
5
6
#!/bin/bash
echo "PID for 2.sh: $$"
echo "2.sh get \$A=$A from 1.sh"
A=C
export A
echo "2.sh: \$A is $A"
=================》》》》》》》》》》》
测试结果:
[root@node2 ~]$ ./1.sh fork
PID for 1.sh before exec/source/fork:10175
1.sh: $A is B
using fork by default...
PID for 2.sh: 10176
2.sh get $A=B from 1.sh
2.sh: $A is C
PID for 1.sh after exec/source/fork:10175
1.sh: $A is B
=============================================
[root@node2 ~]$ ./1.sh source
PID for 1.sh before exec/source/fork:10185
1.sh: $A is B
using source...
PID for 2.sh: 10185
2.sh get $A=B from 1.sh
2.sh: $A is C
PID for 1.sh after exec/source/fork:10185
1.sh: $A is C
=============================================
[root@node2 ~]$ ./1.sh exec
PID for 1.sh before exec/source/fork:10194
1.sh: $A is B
using exec...
PID for 2.sh: 10194
2.sh get $A=B from 1.sh
2.sh: $A is C
[cpsuser@cps-svr-153 zy]$
=============================================
从以上结果可以看出:
1.执行source和exec的过程中没有产生新的进程,而fork是默认的运行方式,在运行的过程中会产生新的进程,也就是子进程
2.source和exec的区别在于exec执行完毕后没有输出进程,也就是说运行完毕2.sh后直接退出了,没有返回1.sh
3.fork和source的最后一句输出分别为:1.sh: $A is B (fork,说明它运行的环境不一样,要不然输出的应该是C)
1.sh: $A is C(source,说明从始至终都是在一个shell中执行)
小节:
source 指定脚本中的命令在同一个shell中运行。(默认shell中的命令都是创建sub-shell,然后执行。执行完后,返回父shell)
fork 就是创建sub-shell运行脚本中的命令,和默认运行方式相同。
exec 和source相似,区别就是,运行完毕命令后退出,不会返回父shell
⑸ linux exec命令主要用来干什么的啊
从外部看是执行一个外部程序,从内部看是开启一个进程来执行目标程序。
⑹ linux运维必须知道的几个常用命令
Linux是一个命令行组成的操作系统,精髓在命令行,无论图形界面发展到什么水平这个原理都是无法改变的,Linux命令有许多强大功能:从简单的磁盘操作、文件存取以及复杂的多媒体图像和媒体文件都会使用到命令。
Linux常用的命令有哪些?老男孩教育为大家总结一下:
安装和登录命令:login 、shutdown 、halt 、reboot 、mount 、umount 、chsh
文件处理命令:file 、mkdir 、grep 、dd 、find 、mv 、ls 、diff 、cat 、ln
网络操作命令:ifconfig 、ip 、ping 、netstat 、telnet 、ftp 、route 、rlogin rcp 、finger
、mail 、nslookup
系统安全相关命令:passwd 、su 、umask 、chgrp 、chmod 、chown 、chattr、sudo、pswho
系统管理相关命令:df 、top 、free 、quota 、at 、lp 、 adser 、groupadd kill 、 crontab 、tar、unzip 、gunzip 、last
⑺ 关于Linux的shell的exec命令
wall是向所有登录系统的用户发送信息,消息的内容是 "Thanks for all the fish" , 相当于短信群发。
exec 3<afile 打开文件afile,文件描述符是3,然后这个3就可以代表文件afile,比如
cat <&3 查看文件afile的内容