如何在Chrome关闭时执行脚本?

rdlzhqv9  于 2023-01-15  发布在  Go
关注(0)|答案(2)|浏览(270)

我想在每次Chrome退出时用rsync做一个书签的时间戳备份。如何在Chrome关闭后立即触发脚本执行?
编辑:
这是使用我尝试实现的解决方案启动Chrome on Linux Mint的默认执行脚本:

#!/bin/bash
#
# Copyright (c) 2011 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

# Let the wrapped binary know that it has been run through the wrapper.
export CHROME_WRAPPER="`readlink -f "$0"`"

HERE="`dirname "$CHROME_WRAPPER"`"

"/opt/google/chrome/chrome" & pid=$!

wait $pid

if ! pgrep chrome > /dev/null; then
  echo "It exited successfully"
fi

# Check if the CPU supports SSE2. If not, try to pop up a dialog to explain the
# problem and exit. Otherwise the browser will just crash with a SIGILL.
# http://crbug.com/348761
grep ^flags /proc/cpuinfo|grep -qs sse2
if [ $? != 0 ]; then
  SSE2_DEPRECATION_MSG="This computer can no longer run Google Chrome because \
its hardware is no longer supported."
  if which zenity &> /dev/null; then
    zenity --warning --text="$SSE2_DEPRECATION_MSG"
  elif which gmessage &> /dev/null; then
    gmessage "$SSE2_DEPRECATION_MSG"
  elif which xmessage &> /dev/null; then
    xmessage "$SSE2_DEPRECATION_MSG"
  else
    echo "$SSE2_DEPRECATION_MSG" 1>&2
  fi
  exit 1
fi

# We include some xdg utilities next to the binary, and we want to prefer them
# over the system versions when we know the system versions are very old. We
# detect whether the system xdg utilities are sufficiently new to be likely to
# work for us by looking for xdg-settings. If we find it, we leave $PATH alone,
# so that the system xdg utilities (including any distro patches) will be used.
if ! which xdg-settings &> /dev/null; then
  # Old xdg utilities. Prepend $HERE to $PATH to use ours instead.
  export PATH="$HERE:$PATH"
else
  # Use system xdg utilities. But first create mimeapps.list if it doesn't
  # exist; some systems have bugs in xdg-mime that make it fail without it.
  xdg_app_dir="${XDG_DATA_HOME:-$HOME/.local/share/applications}"
  mkdir -p "$xdg_app_dir"
  [ -f "$xdg_app_dir/mimeapps.list" ] || touch "$xdg_app_dir/mimeapps.list"
fi

# Always use our versions of ffmpeg libs.
# This also makes RPMs find the compatibly-named library symlinks.
if [[ -n "$LD_LIBRARY_PATH" ]]; then
  LD_LIBRARY_PATH="$HERE:$HERE/lib:$LD_LIBRARY_PATH"
else
  LD_LIBRARY_PATH="$HERE:$HERE/lib"
fi
export LD_LIBRARY_PATH

export CHROME_VERSION_EXTRA="stable"

# We don't want bug-buddy intercepting our crashes. http://crbug.com/24120
export GNOME_DISABLE_CRASH_DIALOG=SET_BY_GOOGLE_CHROME

# Automagically migrate user data directory.
# TODO(phajdan.jr): Remove along with migration code in the browser for M33.
if [[ -n "" ]]; then
  if [[ ! -d "" ]]; then
    "$HERE/chrome" "--migrate-data-dir-for-sxs=" \
      --enable-logging=stderr --log-level=0
  fi
fi

# Sanitize std{in,out,err} because they'll be shared with untrusted child
# processes (http://crbug.com/376567).
exec < /dev/null
exec > >(exec cat)
exec 2> >(exec cat >&2)

# Make sure that the profile directory specified in the environment, if any,
# overrides the default.
if [[ -n "$CHROME_USER_DATA_DIR" ]]; then
  # Note: exec -a below is a bashism.
  exec -a "$0" "$HERE/chrome"  \
    --user-data-dir="$CHROME_USER_DATA_DIR" "$@"
else
  exec -a "$0" "$HERE/chrome"  "$@"
fi
6mzjoqzu

6mzjoqzu1#

在OS X中,这个shell脚本将启动Chrome,然后在Chrome退出时启动do stuff? -在任何类Unix操作系统中,应该很容易根据您的需要调整它。

#! /usr/bin/env sh

"/Applications/Google Chrome.app/Contents/MacOS/Google Chrome" & pid=$!

wait $pid

if ! pgrep Chrome > /dev/null; then     # no instances of Chrome are running
  # do stuff
fi

(基于this answer
编辑:这在Ubuntu中很有效:

#! /usr/bin/env sh

/opt/google/chrome/chrome & pid=$!

wait $pid

if ! pgrep chrome > /dev/null; then
  # do stuff
fi
d5vmydt9

d5vmydt92#

由于谷歌浏览器使用进程的方式,监控(PID)特定谷歌浏览器窗口(或示例)的进程通常是一件令人头痛的事情,甚至(几乎)不可能。
但是,有一种变通方法可以实现这一点,只需使用指向/tmp文件夹(--user-data-dir=/tmp)的--user-data-dir参数即可。
下面,我创建了一个bash脚本,用于启动http Web服务Gitea,在Google Chrome中打开它,然后在Google Chrome窗口关闭时终止它。

#!/bin/bash

gitea & GITEA_PID=$!
sleep 3
google-chrome-stable --user-data-dir=/tmp --app=http://0.0.0.0:3000/ & CHROME_PID=$!
wait $CHROME_PID
kill -9 $GITEA_PID

基本上我也是这么想的。适应一下。🥰
[参考:https://stackoverflow.com/a/75013043/3223785https://stackoverflow.com/a/35294908/3223785https://www.ghacks.net/2013/10/06/list-useful-google-chrome-command-line-switches/https://www.reddit.com/r/firefox/comments/w61dwi/how_do_i_start_firefox_in_a_single_window_with/?utm_source=share&utm_medium=web2x&context=3、]

相关问题