Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
(Ubuntu)Linux:有没有可能知道你';重新运行内部§;脚本§;指挥部?_Linux_Bash_Shell_Ubuntu_Scripting - Fatal编程技术网

(Ubuntu)Linux:有没有可能知道你';重新运行内部§;脚本§;指挥部?

(Ubuntu)Linux:有没有可能知道你';重新运行内部§;脚本§;指挥部?,linux,bash,shell,ubuntu,scripting,Linux,Bash,Shell,Ubuntu,Scripting,当~/.bashrc在登录时不断创建script会话,除非通过CTRL+C退出,所以我认为特定的命令必须有if来检查我们是否已经在运行script会话,这样它就不会无限期地创建新会话。如果您要执行类似的操作 exec script "session.$(date)" …在可以递归的情况下,请先设置环境变量,并仅在未设置时继续: [[ $- != *i* ]] && [[ -z $SCRIPT_RUNNING ]] && { export SCRIPT_RUN

~/.bashrc
在登录时不断创建
script
会话,除非通过CTRL+C退出,所以我认为特定的命令必须有
if
来检查我们是否已经在运行
script
会话,这样它就不会无限期地创建新会话。

如果您要执行类似的操作

exec script "session.$(date)"
…在可以递归的情况下,请先设置环境变量,并仅在未设置时继续:

[[ $- != *i* ]] && [[ -z $SCRIPT_RUNNING ]] && {
  export SCRIPT_RUNNING=1
  exec script "session.$(date)"
}
…在非交互外壳上,
$-
测试跳过此操作;运行的
脚本\u
测试在以前由父进程设置时跳过它


也就是说,如果你这样做是出于任何安全目的,这是完全不合适的。从
.bashrc
启动
script
意味着记录用户操作的进程由该用户拥有和控制。。。利益冲突,多少?这也意味着一个以命令行参数开始的交互式shell将被一个没有命令行参数的shell所取代,这可能会破坏正在做有趣事情的软件。

您可以随时查看您的进程树以了解您的父母是谁。你的目标是什么操作系统?如果你可以假设Linux,那么你可以使用procfs使工作稍微简单一点。@CharlesDuffy:Ubuntu(12.04.4)…好吧,等等——如果你说的是无限期,那听起来就像你在写一个在脚本下递归调用自己的工具。如果是这样的话,有不同的更好的方法来处理这个问题。@CharlesDuffy:我自己也不相信,但是在
.bashrc
中使用
script
可以无限期地创建会话,因为每次创建会话时都会运行该文件,这可以通过退出
的次数不超过创建会话的次数来证明;5个额外会话,递归地,在第一个会话中。我不能总是让cronjob
chmod
ding
/dev/pts/
,所以我寻找了一些方法,
script
似乎是解决方法,但每次你
su
都必须键入它,这不是一个选项,但是在
.bashrc
中使用
script
确实是一个坏主意,因为递归创建
script
会话。你真正的目标是什么?要记录用户的所有操作?以那个用户的身份运行
script
绝对是错误的做法;用户逃避或修改日志记录是很简单的,因为他们拥有的进程在日志目标上必然有一个打开的文件句柄。