标签: hook

bash 脚本可以连接到文件吗?

我想要一个脚本休眠,除非某个文件被修改/删除(或者在某个目录中创建的文件,或者......)。这可以以某种优雅的方式实现吗?我想到的最简单的事情是在再次检查状态之前休眠一段时间的循环,但也许有更优雅的方法?

linux shell hook files

32
推荐指数
1
解决办法
4081
查看次数

ssh 登录钩子?

每次用户使用 ssh 连接时,有没有办法运行脚本/命令?是否可以全局配置(即在任何用户登录时运行脚本)?

我在 Identica 上遇到了这个问题,但还没有答案,无论如何都想知道。

ssh hook

16
推荐指数
2
解决办法
9531
查看次数

在 $PWD 发生任何更改后,如何在 bash 中运行命令?

zsh 提供了一些不错的钩子函数,包括chpwd在用户更改目录后运行函数。

# zsh only
function greet() { echo 'hi'; }
chpwd_functions+=("greet")
cd .. # hi
pushd # hi
popd  # hi
Run Code Online (Sandbox Code Playgroud)

我正在尝试在 bash 中模拟它。

约束:

  • 它必须在交互式和非交互式 shell 中都可以工作,我认为这意味着它不能依赖于类似的东西 $PROMPT_COMMAND
  • 它不能重新定义cd,因为我希望它适用于任何更改目录的命令(例如,pushdpopd
  • 它必须用户的命令之后运行,所以trap "my_function" DEBUG不起作用,除非我能以某种方式在那里说,“首先运行$BASH_COMMAND我们被困,然后也这样做......”我看到我可以避免启用$BASH_COMMAND if 的自动运行并且trap 函数返回 1,但我认为我不想强制,并且返回成功(但已修改)的命令似乎是错误的。extdebugextdebug1

最后一部分——“按照用户的命令运行”——是目前让我感到困惑的部分。如果我可以在每个命令之后运行一个函数,我可以让它检查自上次检查以来目录是否已更改。例如:

function check_pwd() {
  # true in a new shell (empty var) or after cd
  if …
Run Code Online (Sandbox Code Playgroud)

bash hook pwd

12
推荐指数
1
解决办法
1675
查看次数

如何为所有用户自动执行 gdm login 上的脚本?

当任何用户通过gdm登录时,我应该修改什么文件来执行一些指令?

我试过了,/etc/bashrc但它在启动 bash 时执行(并且每次打开 xterm 时)。我想在用户登录时只执行一次。

我想要做的是每次用户登录时“重置”一些用户首选项(包括窗口管理器),因此脚本应该在 WM 初始化之前运行。

login centos gdm hook

8
推荐指数
1
解决办法
8162
查看次数

如何在使用 apt-get 下载之前运行命令?

如何在 apt-get 开始下载软件包之前运行命令?

我知道 dpkg 预调用挂钩(将脚本挂钩到 apt-get),但这似乎是在下载后运行的。

$ apt-get update
Get: 11 http://security.debian.org/ wheezy/updates/main qemu amd64 1.1.2+dfsg-6a+deb7u7 [115 kB]
Fetched 70.9 MB in 10s (6,776 kB/s)
refreshing freenet index
--2015-05-19 15:55:25--  http://127.0.0.1:8888/freenet:USK@oRy7ltZLJM-w-kcOBdiZS1pAA8P-BxZ3BPiiqkmfk0E,6a1KFG6S-Bwp6E-MplW52iH~Y3La6GigQVQDeMjI6rg,AQACAAE/deb.mempo.org/-42/
Run Code Online (Sandbox Code Playgroud)

我们需要的是在下载之前运行一个命令。更准确地说:脚本必须在调用 apt-get 之后但在 apt-get 访问任何在线资源之前运行。

有没有类似预下载挂钩的东西?

重要的是,可以在无需替换脚本 apt-get 的情况下完成安装(并且无需执行任何其他可以通过更新撤消的操作)。

apt hook

8
推荐指数
2
解决办法
4504
查看次数

加密 mkinitcpio.conf 中的钩子用于完整系统加密 USB 驱动器 Arch 安装

我已经在U 盘上安装了 Arch Linux,并使用 LUKS 进行了完整的系统加密。Arch wiki 像往常一样带我浏览了几乎所有内容。我遇到的唯一问题是在mkinitcpio. Arch wiki 说对于 USB 安装,block钩子必须紧跟在udev钩子之后。维基还说对于加密,encrypt钩子必须在钩子之前,但不一定是立即,filesystem钩子。遵循这些规则我第一次尝试:

HOOKS="encrypt base udev block autodetect modconf filesystems keyboard fsck"
Run Code Online (Sandbox Code Playgroud)

但它没有用,所以我encrypt后来搬到了:

HOOKS="base udev block autodetect modconf encrypt filesystems keyboard fsck"
Run Code Online (Sandbox Code Playgroud)

它工作正常。这引出了我的问题。哪些是对的依赖encrypt挂钩和我在哪里可以找到有关钩依赖性的详细信息?

arch-linux dependencies hook mkinitcpio

6
推荐指数
1
解决办法
4685
查看次数

当温度超过阈值时运行命令,没有守护进程

如果我的笔记本电脑太热,我需要运行一个特定的命令(例如,向 Firefox 或 Virtualbox 发送一个 STOP 信号,以防止我的笔记本电脑猛烈关闭并损坏我的硬盘)。

我可以轻松编写一个程序,该程序在定期检查温度的同时无限循环。这个问题的答案使用这种方法。

但是,我想避免运行我自己的守护程序,而是将我的程序附加到现有的程序。例如,我可以在我的系统日志中看到:

5 月 5 日 02:52:27 myhostname 内核:[9141.022262] intel ips 0000:00:1f.6:超出 MCP 限制:平均温度 9276,限制 9000

所以我的机器中已经有代码检查温度,它会根据条件触发一些操作(例如,当温度超过 9000 时记录警告消息)。另一个例子是风扇在相同的温度下加速。

如何将我的程序附加到我机器中的现有代码?风扇驱动程序速度变化和内核温度警告消息是否由同一代码触发?我怎样才能找到这个?

kernel hook temperature daemon

5
推荐指数
1
解决办法
1503
查看次数

检查 FreeBSD 系统上的 IO 操作

我会知道有什么方法可以检查/拦截 FreeBSD 上的 IO 操作。像 ktrace 一样,但如果我不知道这个过程(例如,这需要一些时间)。

freebsd io hook trace

5
推荐指数
2
解决办法
672
查看次数

挂钩脚本中未设置 Dpkg 环境变量 DPKG_HOOK_ACTION

根据man dpkgI can use DPKG_HOOK_ACTIONto get the current dpkg action is running in my dpkg hook script

\n\n
--pre-invoke=command\n--post-invoke=command\n      Set an invoke hook command to be run via \xe2\x80\x9csh -c\xe2\x80\x9d before or after the dpkg run for the unpack, configure, install, triggers-only, remove  and  purge  dpkg  actions.  This\n      option  can be specified multiple times. The order the options are specified is preserved, with the ones from the configuration files taking precedence.  The environment\n      variable DPKG_HOOK_ACTION is set …
Run Code Online (Sandbox Code Playgroud)

ubuntu debian dpkg apt hook

3
推荐指数
1
解决办法
1356
查看次数

每次应用程序执行时如何预加载我的 .so?

我已经通过这篇文章成功地在 Linux 下使用了一个钩子:http : //hackerboss.com/overriding-system-functions-for-fun-and-profit/

现在我想让我的 .so 文件每次espeak加载时加载,无论它是否是从另一个应用程序调用的。我怎么做?

linux process shell-script hook espeak

2
推荐指数
1
解决办法
1756
查看次数

每次修改文件时触发动作

可能的重复:
bash 脚本可以连接到文件吗?

每次修改文件时,是否可以将机制安装到文件以​​执行操作(例如标记某些日志文件中的更改等)?我希望能够查看在给定时间段内修改的所有文件的内容,或者在每次有人修改文件时收到警报。

filesystems hook files

1
推荐指数
1
解决办法
1673
查看次数