如何在使用zsh时自动启动作业

时间:2013-03-30 11:33:58

标签: linux bash shell background zsh

我最近改用zsh进行日常使用。我遇到的一个问题是我如何自动启动一些后台命令行可执行文件(例如,fetchmail -d 1800)。当我将行添加到~/.zprofile~/.zshrc时,一切正常,直到我打开另一个zsh流程实例(事实上,我使用tmux所以它经常发生),fetchmail抱怨< / p>

  fetchmail: can't accept options while a background fetchmail is running.

我认为~/.zprofile可能只执行一次,但似乎我错了。那么我该如何正确处理呢?

感谢。

2 个答案:

答案 0 :(得分:2)

编辑:比原创想法更好(来自下面的评论):

ps -C fetchmail >/dev/null || fetchmail -d 1800

修正了原创想法:

检查后台中是否有正在运行的进程并且仅在不运行时才运行fetchmail

[ -z `ps aux | grep "fetchmail" | grep -v "grep"` ] && fetchmail -d 1800

答案 1 :(得分:2)

为什么需要在zsh配置文件中启动它?所有或几乎所有窗口管理器和桌面环境都支持在启动时运行命令。例如,使用fluxbox时,您只需将此启动行添加到$HOME/.fluxbox/startup

注意:每次有人启动登录shell时都会读取.zprofile。每次有人启动交互式shell时都会读取.zshrc。每当有人启动一个shell(无论哪个)时,都会读取.zshenv。 (除非被命令行参数明确禁用。)实际上没有配置文件只读一次。