shell result from cmdline

echo $?

if 0 then success ;else failure

(shell 执行每部返回值,rm -rf 错误,打包不能覆盖)

我们知道,linux命令行上一个命令的退出码放在了$?环境变变中,但是,如果这个命令是一串管道符连接和多个命令,怎么知道每个命令的退出码?你可以 使用 PIPESTATUS环境变量。比如这个测试:true | false | true; echo "${PIPESTATUS[@]}"

解决sudo: sorry, you must
have a tty to run sudo
 
前几天遇到一个问题,在一个终端中调用另一个shell,始终是无法执行的,后来捕捉到报错信息为sudo:
sorry, you must have a tty to run sudo,后来,在网上了解到可以如下解决:
1. 编辑 /etc/sudoers
 
  1)Defaults  
 requiretty,修改为 #Defaults    requiretty,表示不需要控制终端。
 
  2)Defaults  
 requiretty,修改为 Defaults:nobody !requiretty,表示仅 nobody 用户不需要控制终端。
 
       如果修改为
Defaults:%nobody !requiretty,表示仅 nobody 组不需要控制终端。
 
其实只要注释掉)Defaults  
 requiretty
那个就可以了。表示在执行的时候不打开终端。但是,有的shell必须要有终端才可以执行。这样显然是不行的。后来,又找到一片文章才搞定。下面为抄录的,仅为记录以后使用。
 
有些程序/脚本可能在没有控制终端的环境下上执行(如系统启动服务时, Daemon,
或者是setsid启动的程序等)
但可能这个程序需要控制终端, 这这么办呢?
如我们的例子: 我们在linux启动时启动一个服务,
可是中间有个程序(旧的systemtap)使用了sudo
但sudo需要控制终端(当然可以通过修改sudo的配置文件,
但这样很对用户不友好啊)
例子: (setsid 启动的程序会失去控制终端)
# setsid sudo ls
sudo: sorry, you must have
a tty to run sudo
(如果你的系统没有输出这句话,
那就是你的系统的sudo配置文件允许sudo可以在这个,
请确保已经设置了Defaults  
 requiretty)
没有控制中断的时候, 打开控制终端是这样的效果:
# setsid head -c 0 /dev/tty
head: cannot open
`/dev/tty' for reading: No such device or address
为了解决这个问题,
所以应该使用能创建(伪)控制终端的程序来启动你的程序如: script, expect
如:
# setsid script -c "sudo
ls" /dev/null
或:
# setsid expect -c 'spawn
sudo ls; expect'
#打开控制终端成功:
# setsid script -c 'head -c
0 /dev/tty' /dev/null 
# setsid expect -c 'spawn
head -c 0 /dev/tty; expect'
不过 setsid 跟 script
组合使用有着奇怪的bug, 我这段时间非常的depression,
这样对script, expect来说,
都是大材小用了

shell (check return of each line)(PIPESTATUS[@])and sudoer的更多相关文章

  1. shell (check return of each line)and sudoer

    shell result from cmdline echo $? if 0 then success ;else failure (shell 执行每部返回值,rm -rf 错误,打包不能覆盖) 解 ...

  2. Shell脚本:while read line无法读取最后一行的问题

    [1]Shell脚本:while read line无法读取最后一行的问题 刚刚利用shell脚本处理日志文件时,发现了一个问题:while read line无法读取到最后一行 通过编辑器可以看到待 ...

  3. SAP(ABAP):STOP,EXIT,CHECK,RETURN,REJECT,CONTINUE

    Stop 命令使用该命令的程序位置INITIALIZATION, AT SELECTION-SCREEN, START-OF-SELECTION和GET 事件中处理说明1. 当在INITIALIZAT ...

  4. learning shell check requires root privileges

    [Purpose]        Shell script check requires root privileges   [Eevironment]        Ubuntu 16.04 bas ...

  5. learning shell check host dependent pkg

    [Purpose]        Shell script check host dependent pkg   [Eevironment]        Ubuntu 16.04 bash env ...

  6. Shell check IP

    #! /bin/bash checkip() {        if echo $1 |egrep -q '^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3 ...

  7. 如何在Windows下开发Python:在cmd下运行Python脚本+如何使用Python Shell(command line模式和GUI模式)+如何使用Python IDE

    http://www.crifan.com/how_to_do_python_development_under_windows_environment/ 本文目的 希望对于,如何在Windows下, ...

  8. Google Shell Style Guide

    转自:http://google.github.io/styleguide/shell.xml Shell Style Guide Revision 1.26 Paul Armstrong Too m ...

  9. KoaHub.JS用于Node.js的可移植Unix shell命令程序代码

    shelljs Portable Unix shell commands for Node.js ShellJS - Unix shell commands for Node.js     Shell ...

随机推荐

  1. Webservice实现与调用(基于Spring的多种方式)

    一.Webservice实现 实现方式分类 1. spring实现 bean配置 <bean class="org.springframework.remoting.jaxws.Sim ...

  2. 从调试角度理解ActionContext、OgnlContext、OgnlValueStack的关系

    被调试代码:    package web; import java.util.Map; import javax.servlet.http.HttpServletRequest; import or ...

  3. css 优先级的bug

    对于前端而言,了解css样式的优先级,对开发或处理bug有着事半功倍的效果,今天在做项目的时候,突然碰到一个优先级的小问题,刚开始不知道所因,后来才发现这个问题是由优先级造成的.先描述下问题,鼠标悬停 ...

  4. C++之string的底层真的是用char数组来实现的么?

    一.引言 遇到一个问题:使用加密库对数据进行加密,得到密文,使用string进行保存并传输,然后可以正确解密出来,但是使用string.c_str()进行参数传递则无法正确解密出明文. 原因是:密文中 ...

  5. [转]C++中的三种继承public,protected,private

    链接:http://www.cnblogs.com/BeyondAnyTime/archive/2012/05/23/2514964.html

  6. /proc/modules分析

    参考:redhat linux deployment guide--5.2.21.  /proc/modules This file displays a list of all modules lo ...

  7. 使用Navicat连接阿里云服务器上的MySQL数据库=======Linux 开放 /etc/hosts.allow

    使用Navicat连接阿里云服务器上的MySQL数据库   1.首先打开Navicat,文件>新建连接> 2,两张连接方法 1>常规中输入数据库的主机名,端口,用户名,密码 这种直接 ...

  8. web automation 常用技术比较

    selenium2支持通过各种driver(FirfoxDriver,IternetExplorerDriver,OperaDriver,ChromeDriver)驱动真实浏览器完成测试. 除此之外, ...

  9. 源码分享!!!world文档转换为JPG图片

    http://bbs.csdn.net/topics/390055515 —————————————————————————————————————————————————— 基本思路是:先将worl ...

  10. 【BZOJ】1668: [Usaco2006 Oct]Cow Pie Treasures 馅饼里的财富(dp)

    http://www.lydsy.com/JudgeOnline/problem.php?id=1668 裸dp.. f[i][j]表示i行j列最大能拿到 f[i][j]=max(f[i+1][j-1 ...