关于linux /bin/bash 和/bin/sh -c 进程的疑问

crontab新建了一个定时任务,定时执行test.sh文件
但是看到进程里有两个同名进程,分别是:


root     20676 20675  0 20:24 ?  00:00:00 /bin/sh -c /test.sh
root     20677 20676  0 20:24 ?  00:00:00 /bin/bash /test.sh



请问为什么会出现两个进程 :/bin/bash 和 /bin/sh -c 呢?
不是应该是只出现

root     20677 20676  0 20:24 ?        00:00:00 /bin/bash /test.sh

这一个进程吗?那这个/bin/bash 和/bin/sh -c都是什么区别呢?

0

1个回答

一般linux发行版默认shell环境为bash。查看/etc/shells。 sh在linux上只是bash的一个软连接,所以我猜测真正执行的是第二个bash。

0
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
#!/bin/bash和#!/bin/sh的区别,source命令和exec命令
Linux脚本开头#!/bin/bash和#!/bin/sh是什么意思以及区别 一、含义 #!/bin/sh是指此脚本使用/bin/sh来解释执行,#!是特殊的表示符,其后面根的是此解释此脚本的shell的路径。 其实第一句的#!是对脚本的解释器程序路径,脚本的内容是由解释器解释的,我们可以用各种各样的解释器来写对应的脚本。 比如说/bin/csh脚本,/b
Linux脚本开头#!/bin/bash和#!/bin/sh是什么意思以及区别
一、意思 #!/bin/sh是指此脚本使用/bin/sh来解释执行,#!是特殊的表示符,其后面根的是此解释此脚本的shell的路径。 其实第一句的#!是对脚本的解释器程序路径,脚本的内容是由解释器解释的,我们可以用各种各样的解释器来写对应的脚本。 比如说/bin/csh脚本,/bin/perl脚本,/bin/awk脚本,/bin/sed脚本,甚至/bin/echo等等。 #
shell脚本开头#!/bin/bash和#!/bin/sh是什么意思以及区别
一直以为在shell脚本中#都是代表着注释功能,同样在脚本开始的#!/bin/sh也只是告诉用户这是一个shell脚本,而最近顺手查了下,才发现不是这个意思,分享下面的文章。 一、意思 #!/bin/sh是指此脚本使用/bin/sh来解释执行,#!是特殊的表示符,其后面跟的是此解释此脚本的shell的路径。 cat /etc/shells可以查看系统支持的shell格式。其实第一句的#!是对...
Shell-/bin/bash和/bin/sh解释器的误用引起的脚本语法错误
背景下面的脚本,在Linux上运行良好,在SUNOS执行的时候报语法错误。#! /bin/sh#支持fwu的使用fwu 不支持的使用fu PS_TYPE="ps -fwu" do_ps=`ps -fwu 2>/dev/null` if [ "$?" -eq 1 ] then PS_TYPE="ps -fu" fiOSTYPE=`uname -a | awk '{print substr($0
#!/bin/bash和#!/bin/sh是什么意思以及区别
尊重原著,著明:本帖为优秀的帖子整合 一、意思 #!/bin/sh是指此脚本使用/bin/sh来解释执行,#!是特殊的表示符,其后面根的是此解释此脚本的shell的路径。 其实第一句的#!是对脚本的解释器程序路径,脚本的内容是由解释器解释的,我们可以用各种各样的解释器来写对应的脚本。 比如说/bin/csh脚本,/bin/perl脚本,/bin/awk脚本,/bin/sed脚本,甚至/bi
解释器/bin/sh和/bin/bash的区别
在redhat的系统中,sh是一个到bash的软链接,但是如果运行如下程序会产生不一样的结果。 #!/bin/bash function InstallFiles () { echo $BUILD } buildroot=nihaoa ROOT=wahu BUILD=${buildroot} \ InstallFiles BUILD=${BUILD}/${ROOT} \ InstallFile
/bin/sh -c的必要性
一、 比如要向 test.asc 文件中随便写入点内容,可以: $ echo "信息" >> test.csv 如果将 test.asc 权限设置为只有 root 用户才有权限进行写操作: $ sudo chown root.root test.csv 然后,我们使用 sudo 并配合 echo 命令再次向修改权限之后的 test.asc 文件中写入信息: $ sudo echo "...
修改Ubuntu的/bin/sh的默认连接
转自:http://blog.csdn.net/andysun1986/article/details/6320896 修改Ubuntu的/bin/sh的默认连接: 终端输入:  cd /bin  ls -l /bin/sh lrwxrwxrwx 1 root root 4 2008-04-28 19:59 /bin/sh -> dash  //默认为dash
使用useradd添加用户后默认sh为/bin/sh导致无法使用history
ubuntu使用useradd添加用户后默认sh为/bin/sh导致无法使用history 很多按键也会出现乱码。 这是由于使用的sh是/bin/sh而不是/bin/bash导致的。 既然已经创建了用户,只能通过修改/etc/passwd解决了。 yourUserName:x:1002:1003::/home/yangming: 改为 yourUserName:x:1002:1
linux几种常见的Shell:sh、bash、csh、tcsh、ash
Linux 是一个开源的操作系统,由分布在世界各地的多个组织机构或个人共同开发完成,每个组织结构或个人负责一部分功能,最后组合在一起,就构成了今天的 Linux。例如: Linux 内核最初由芬兰黑客 Linus Torvalds 开发,后来他组建了团队,Linux 内核由这个团队维护。GNU 组织开发了很多核心软件和基础库,例如 GCC 编译器、C语言标准库、文本编辑器 Emacs、进程管
linux服务器/bin/bash误删的后果
1、该文件删除后,/etc/init.d/目录下的几乎所有服务都无法启动。  使用 service sshd start 启动或停止服务时,报错: env: /etc/init.d/sshd : no such file or directory 单独启动某个服务,执行/etc/init.d/目录下的服务时,也无法启动: $ ./sshd restart /bin/bash: no su
linux命令行即-/bin/sh:xx(命令) not found 的几种原因和解决办法
问题现象:解压jdk的包,执行java -version,出现-sh:java not found 问题原因:关于-/bin/sh:xx(命令) not found  的几种原因: 1./bin/目录下没有这个命令; 2.bin/目录有这个命令,只是执行权限不够,或者程序执行权限不够; 3.程序需要的静态库或者动态库没有; 解决办法: 原因一的解决方法:安装busy box将busy ...
shell脚本第一行:#!/bin/bash的含义
相信有接触过shell脚本的同学们都应该知道,shell脚本的第一行一般会写有以下字样: #!/bin/bash或者 #!/bin/sh或者 #!/bin/awk 比较常见的说法是:第一行的内容指定了shell脚本解释器的路径,而且这个指定路径只能放在文件的第一行 但我们也知道,在shell脚本里符号#是作为注释符出现的,在其之后的同一行内容会被视为注释进而不执行 那么第一行所
shell中第一行#!/bin/bash的作用
shell中 #!/bin/bash #!/bin/ksh 这些东西是干什么的,有用吗? 有用,这些不是注释符,而是说明下面的脚本是在什么shell下面运行的, 并且以该shell环境来执行脚本,一个简单的例子 #!/bin/ksh export LOG=/tmp/test.log exec >> $LOG 2>&1 echo "a test message!"
sh -c的必要性
在Linux使用 echo 并配合命令重定向是实现向文件中写入信息的快捷方式。 比如要向 test.asc 文件中随便写入点内容,可以: $ echo "信息" > test.asc # 或者 $ echo "信息" >> test.asc 下面,如果将 test.asc 权限设置为只有 root 用户才有权限进行写操作: $ sudo chown root.root test....
Linux下启动进程脚本
判断进程是否存在,如果不存在就启动它,如果存在就重启它。   #!/bin/bash #判断进程是否存在,如果不存在就启动它如果存在就重启它 while true; do cd /home/neousys/Documents/smartcockpit #启动一个循环,定时检查进程是否存在 server=`ps aux | grep smartcockpit | grep -v g...
嵌入式 软链接Ubuntu下的/bin/sh改dash为bash
which sh which bash ln -s bash /bin/sh -f 让/bin/sh指向bash
[shell]Linux脚本开头#!/bin/bash和#!/bin/sh是什么意思以及区别
一直以为在shell脚本中#都是代表着注释功能,同样在脚本开始的#!/bin/sh也只是告诉用户这是一个shell脚本,而最近顺手查了下,才发现不是这个意思,分享下面的文章。 转自:http://www.cnblogs.com/EasonJim/p/6850319.html 一、意思 #!/bin/sh是指此脚本使用/bin/sh来解释执行,#!是特殊的表示符,其后面跟的是此解释此脚本的sh...
解决bash脚本执行提示/bin/sh^M: bad interpreter错误
博客说明: 博客内容用于学习与分享,有问题欢迎大家讨论留言。 关于作者: 程序员:杨洪(ellende) blog: http://blog.csdn.NET/ellende email: yangh.personal@qq.com 转载请注明出处,引用部分网上博客,若有侵权还请作者联系与我。
sh 软连接的一些操作
ls -l sudo mv /bin/sh /bin/sh.old sudo ln -s /bin/sh /bin/bash sudo ln -s /bin/bash  /bin/sh  sudo ln -s /bin/bash  /bin/sh
shell脚本——调试(-n / -x /-c)
我们在前面介绍的调试手段是通过修改shell脚本的源代码,从其输出相关的调试信息来定位错误的,那有没有不修改源代码来调试shell脚本的方法呢?有的,那就是使用shell的执行选项,下面将介绍一些常用选项的用法:-n 只读取shell脚本,但不实际执行-x 进入跟踪方式,显示所执行的每一条命令-c "string" 从strings中读取命令"-n"可用于测试shell脚本是否存在语法错误,但不会...
linux shell脚本增加#!/bin/sh导致的问题
linux shell脚本增加#!/bin/sh导致的问题
solaris移植到linux的大坑:bash和sh中环境变量继承的差异
linux中环境变量是继承的,自定义变量不可继承
定制你自己的Linux系统 ( by quqi99 )
定制你自己的Linux ( by quqi99 ) 作者:张华  发表于:2013-09-21 版权声明:可以任意转载,转载时请务必以超链接形式标明文章原始出处和作者信息及本版权声明 ( http://blog.csdn.net/quqi99 ) 本文是《编译linuxkernel及制作initrd( by quqi99 ) 》的续集,将采用busybox实践动
shell/system启动程序
在Linux中,Shell进程是所有执行码的父进程。当一个执行码执行时,Shell进程会fork子进程然后调用exec函数去执行执行码。Shell进程堆栈中存放着该用户下的所有环境变量,使用execl、execv、execlp、execvp函数使执行码重生时,Shell进程会将所有环境变量复制给生成的新进程;而使用execle、execve时新进程不继承任何Shell进程的环境变量,而由envp[...
linux 用notepad++编写shell脚本出现/bin/sh^M: bad interpreter: 没有那个文件或目录l的解决方案
-
黑客常用 Linux 入侵常用命令
原文地址:http://blog.csdn.net/jHstGeWWubw/article/details/78941387写个php一句话后门上去:[jobcruit@wa64-054 rankup_log]$ echo -e "<?php @eval(\$_POST[md5])?>" >rankuplog_time.php[jobcruit@wa64-054 rankup_l...
解决 linux下编译make文件报错“/bin/bash^M: 坏的解释器:没有那个文件或目录” 问题
PS背景:我在公司做sdk 的pc端开发,所以经常会在win下编译通过之后跑到linux下再运行一次已确保能支持多平台。        今儿在win下跑完一程序,然后放到linux下跑的时候,我用指令:sudo ./build.sh但是却没有任何反应。于是我换了指令,用chmod u+x build.sh ./build.sh报错 “build.sh  /bin/bash^M: 坏的解释器:没有那
坏的解释器: 没有那个文件或目录/bin/sh
坏的解释器: 没有那个文件或目录/bin/sh shell脚本运行时,提示“坏的解释器: 没有那个文件或目录/bin/sh”,经过排查,原因为: shell脚本是在windows环境下编辑的(编辑软件为:notepad++),到Linux下后成为了杂乱的文本.
sh文件运行提示 “/bin/bash^M: 坏的解释器: 没有那个文件或目录”
sh文件运行提示 “/bin/bash^M: 坏的解释器: 没有那个文件或目录”今天偶然写了个sh文件,运行的时候提示 /bin/bash^M: 坏的解释器: 没有那个文件或目录#!/bin/bash echo hello word! 后来发现原因是我在windows下编写的。在linux下通过cat -A hello.sh发现:#!/bin/bash^M$ echo hello word!^M$
解决ubantu下默认使用/bin/dash执行脚本的问题
实验楼使用的Linux环境是ubantu,有时候运行sh脚本会出现如下错误: Syntax error: Bad fd number 解决方式:将shell环境修改为bash rm -rf /bin/sh ln -s /bin/bash /bin/sh 之后就可以正常运行sh文件了 ...
Shell脚本bash:/t.sh:/bin/bash^M:损坏的解释器:没有该目录和文件
使用命令sed -i 's/\r$//' urfile 可以解决 (urfile 为目标文件) 出现这个问题的原因如下:在Windows下,每一行的结尾是\n\r,但是在Linux下文件的结尾是\n。因此在Windows环境下编辑过的文件在Linux下打开看的时候每一行的结尾就会多出来一个字符\r。...
解决报错 “build.sh /bin/bash^M: 坏的解释器:没有那个文件或目录”
执行.sh脚本时,报错 “build.sh  /bin/bash^M: 坏的解释器:没有那个文件或目录”,因为 .sh文件是从windows拷贝过来的,所以多了\r,执行: sed -i 's/\r$//' start.sh 会把 start.sh 中的\r 替换成空白,再次执行则成功!
centos7执行shell报/bin/sh^M:损坏的解释器: 没有那个文件或目录
/bin/sh^M:损坏的解释器: 没有那个文件或目录 脚本文件保存时使用了DOS格式,用DOS2UNIX转为UNIX格式,也可以用vim打开,用:set ff=unix转换。 不要在 Windows下编辑脚本文件,否则经常会遇到这种问题。 代码: sed -i ‘s/\r$//’ server.sh 还 可以用 vim 打开文件,然后执行冒号命令: 代码: :set ff=un...
【转】修改Ubuntu的/bin/sh的默认连接
原文转自:https://blog.csdn.net/Andysun1986/article/details/6320896 【转】修改Ubuntu的/bin/sh的默认连接: 终端输入: root@zhanghc-Ubuntu:~# cd /bin root@zhanghc-Ubuntu:/bin# ls -l /bin/sh lrwxrwxrwx 1 root root 4 ...
新版本caffe脚本运行无权限,#!/usr/bin/env sh
今天运行新版caffe(150818)运行脚本老师提示 无权限。  在论坛里看到下面这个解释 应该就是没有指定bash作为此脚本的解释器,在最var这个脚本 的最上面加上#!/bin/bash看看。 我马上打开自带的一个脚本:如下 #!/usr/bin/env sh ./build/tools/caffe train --solver=examples/mnist/lenet_
【Linux学习】解决Linux环境下执行脚本时报错:/bin/bash^M: 坏的解释器: 没有那个文件或目录
一、问题描述 我在Windows 10 系统下编辑了一个发送消息到企业微信的shell脚本文件,然后copy到了远程的Linux服务器,当运行的时候报错了。如下所示: root@ubuntu116:/data/gitlabData/auto_back_shell# ./qiyewechat-notifier.sh -bash: ./qiyewechat-notifier.sh: /bin/ba...
bash: ./cmd.sh: /bin/sh^M: 坏的解释器: 没有那个文件或目录 解决办法
我在使用maven进行打包工程时,生成execute.sh文件。打包的zip上传到maven私服后,我在centos 7 下面下载,然后解压出execute.sh,并执行,但是缺报出错误【bash: ./cmd.sh: /bin/sh^M: 坏的解释器: 没有那个文件或目录 解决办法】经查,是因为MACOS WINDOWS LINUX下的换行符的原因,造成在linux下无法识别正确的换行符。我在m...
关于!#/bin/sh的疑问
编shell时,我看见别人编写的脚本有些第一行加了!#/bin/sh或者!#/bin/bash,有些脚本却没有这一行?怎么回事?
sh下运行#!/bin/bash开头的脚本会返回not found
inittab脚本:::sysinit:/etc/rc.sysinit ::respawn:-/bin/sh::once:/bin/mount -a::restart:/sbin/init::ctrlaltdel:/sbin/reboot::shutdown:/bin/umount -a -r::shutdown我在/etc/inittab里想执行/etc/rc.sysinit脚本失败,提示是:c
文章热词 机器学习教程 Objective-C培训 交互设计视频教程 颜色模型 设计制作学习
相关热词 mysql关联查询两次本表 native底部 react extjs glyph 图标 数据库课程设计疑问 数据库课程设计疑问