我试图在启动过程中使用元数据键“startup-script”启动 tmux。我正在尝试执行tmux new-session -d -s toto
在启动期间,但是当我执行tmux ls
之后我没有看到任何 tmux 会话。
我在这里缺少什么?
您可能会忽略一些先决条件:
该程序应安装在映像上。标准映像安装了最少的程序集。
每次启动实例时都会运行启动脚本,其运行方式为root
。所以如果你只是跑tmux
直接从启动脚本开始,它将启动一个新的tmux
会话但作为 root 用户。这不是您最想要的。
话虽如此,这会起作用(我已经给出了使用的例子gcloud
但您也可以将类似的逻辑应用于 REST API 或 Cloud Console):
所有这些都可以使用此启动脚本来完成:
(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,然后启动一个名为的新分离 tmux 会话toto
.
您可以在创建实例时设置此启动脚本:
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
或稍后随时更新现有虚拟机的元数据:
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
你总是可以重新运行启动脚本 https://cloud.google.com/compute/docs/startupscript#rerunthescript在虚拟机上(无需重新启动虚拟机):
$ sudo google_metadata_script_runner --script-type startup
有关的完整文档启动脚本 https://cloud.google.com/compute/docs/startupscript可以在这里找到。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)