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. Python 实现抽象类的两种方式+邮件提醒+动态导入模块+反射(参考Django中间件源码)

    实现抽象类的两种方式 方式一 from abc import ABCMeta from abc import abstractmethod class BaseMessage(metaclass=AB ...

  2. java中Keytool的使用总结 (加密 密钥(key)和证书(certificates))

    http://blog.chinaunix.net/uid-17102734-id-2830223.html

  3. 关于Context

    Context字面意思是上下文,位于framework package的android.content.Context中,其实该类为LONG型,类似Win32中的Handle句柄.很多方法需要通过 C ...

  4. C++-教程1-VS2010环境设置

    一.需要下载的软件 1.visual studio 2010\\xxzx\tools\编程工具\MICROSOFT\VISUAL.STUDIO\VISUAL.STUDIO.201032位cn_visu ...

  5. 一款基于的jQuery仿苹果样式焦点图插件

    这次我们要分享的这款jQuery焦点图非常特别,它的外观特别简单,但是又相当大气.焦点图的整体样式是仿苹果样式的,由于jQuery的运用,我们只要点击图片下方的缩略图即可达到图片切换的焦点图特效,这款 ...

  6. The 14th UESTC Programming Contest Final B - Banana Watch 预处理、前缀和

    B - Banana Watch Time Limit: 1000/1000MS (Java/Others)     Memory Limit: 262144/262144KB (Java/Other ...

  7. jquery autocomplete s.toLowerCase(); 对象不支持此属性或方法

    今天发现了一个问题,自动提示删掉后再输入,会出现 s.toLowerCase(); 对象不支持此属性或方法的错误,后来格式化了jquery的autocomplete发现他是在matchSubset方法 ...

  8. dp + 状态压缩 - Codeforces 580D Kefa and Dishes

    Kefa and Dishes Problem's Link Mean: 菜单上有n道菜,需要点m道.每道菜的美味值为ai. 有k个规则,每个规则:在吃完第xi道菜后接着吃yi可以多获得vi的美味值. ...

  9. CSS实现文字半透明显示在图片上方法

    CSS实现文字半透明显示在图片上方法 在css中文字半透明我们会需要使用滤镜效果也就是css中的filter:alpha来实现了,下面来看两个文字显示在图片上并且半透明的例子. CSS让一行文字显示在 ...

  10. Softmax vs. Softmax-Loss VS cross-entropy损失函数 Numerical Stability(转载)

    http://freemind.pluskid.org/machine-learning/softmax-vs-softmax-loss-numerical-stability/ 卷积神经网络系列之s ...