2015-06-13 28 views
1

我想實現一個自動代碼關閉並通過Crontab在我的Google Cloud帳戶中啓動虛擬機實例。操作系統是Ubuntu 12 lts,並且安裝有Google服務帳戶,因此它可以處理我的Google雲帳戶上的讀/寫操作。谷歌雲SDK代碼執行通過cron

我實際的代碼是在這個文件/home/ubu12lts/cronfiles/resetvm.sh

#!/bin/bash 
echo Y | gcloud compute instances stop my-vm-name --zone us-central1-a 
sleep 120s 
gcloud compute instances start my-vm-name --zone us-central1-a 
echo "completed" 

當我這樣調用上面的文件,

$ bash /home/ubu12lts/cronfiles/resetvm.sh 

它可以完美的和做的工作。

現在我想在cron中設置它,所以它會每小時自動執行一次。所以,我沒有

$ sudo crontab -e 

而且在cron

0 * * * * /bin/sh /home/ubu12lts/cronfiles/resetvm.sh >>/home/ubu12lts/cron.log 

加入這個代碼,並取得可執行腳本

chmod +x /home/ubu12lts/cronfiles/resetvm.sh 

我也加入創建具有.txt文件的樣本命令測試的crontab一個示例消息,它的工作完美。

但上面的gcloud SDK代碼不能通過cron工作。 VM不會在我的GC計算引擎中停止啓動。

任何人都可以幫忙嗎?

非常感謝。

回答

1

您已將條目添加到root的crontab,而您的Cloud SDK安裝是爲其他用戶設置的(我正在猜測ubu121lts)。

你應該使用添加在ubu121lts的crontab條目:

crontab -u ubu121lts -e 

此外您的項目目前正在計劃在每個小時的第0分鐘的運行。這是你的意圖嗎?

+1

順便說一下,Gclcoud會在$ HOME/.config/gcloud和gcloud下的文件中查找緩存的憑據以及存儲的屬性(如項目),有時可以使用$ HOME取消設置。您可能需要在腳本中設置$ HOME來補償或使用$ GCLOUD_CONFIG來選擇完全爲腳本使用的其他配置目錄。) –

+0

感謝您的嘗試。是的,我在ubu12ots用戶中也添加了相同的cron,但沒有運氣。是的,我希望它每小時運行第0分鐘。 – Ali

+0

你可以看看cron日誌,看看是否有任何錯誤? – Vilas