(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个额外会话,递归地,在第一个会话中。我不能总是让cronjobchmod
ding/dev/pts/
,所以我寻找了一些方法,script
似乎是解决方法,但每次你su
都必须键入它,这不是一个选项,但是在.bashrc
中使用script
确实是一个坏主意,因为递归创建script
会话。你真正的目标是什么?要记录用户的所有操作?以那个用户的身份运行script
绝对是错误的做法;用户逃避或修改日志记录是很简单的,因为他们拥有的进程在日志目标上必然有一个打开的文件句柄。