Google Compute Engine - 使用启动脚本启动tmux

时间:2017-06-13 14:30:14

标签: google-compute-engine tmux

我试图在启动期间使用元数据键" startup-script"来启动tmux。我尝试在启动期间执行tmux new-session -d -s toto,但之后我执行tmux ls时,我看不到任何tmux会话。

我在这里缺少什么?

1 个答案:

答案 0 :(得分:2)

这里可能缺少一些先决条件:

  1. 程序应安装在图像上。标准映像安装了一组极少的程序。

  2. 启动脚本每次启动实例时都会运行,并以root运行。因此,如果您只是直接从启动脚本运行tmux,它将以root用户身份启动新的tmux会话。这不是你想要的。

  3. 话虽如此,这将有效(我使用gcloud给出了示例,但您也可以将相似的逻辑应用于REST API或云控制台):

    使用此启动脚本可以完成所有这些操作:

    (hash tmux 2>/dev/null || (apt-get update && sudo apt-get -y install tmux)) && sudo -H -u USERNAME tmux new-session -d -s toto
    

    上面的命令将安装tmux(如果尚未安装),然后启动一个名为toto的新的分离tmux会话。

    您可以在创建实例时设置此启动脚本:

    gcloud compute instances create VM_NAME --metadata 'startup-script=(hash tmux 2>/dev/null || (apt-get update && sudo apt-get -y install tmux)) && sudo -H -u USERNAME tmux new-session -d -s toto' --zone ZONE_NAME --project PROJECT_NAME
    

    或稍后为现有VM更新元数据:

    gcloud compute instances add-metadata vm-1 --metadata 'startup-script=(hash tmux 2>/dev/null || (apt-get update && sudo apt-get -y install tmux)) && sudo -H -u USERNAME tmux new-session -d -s toto' --zone ZONE_NAME --project PROJECT_NAME
    

    您可以随时在VM上re-run the startup script(无需重新启动VM):

    $ sudo google_metadata_script_runner --script-type startup
    

    此处提供了有关Startup scripts的完整文档。