É possível ver o script de inicialização de saída no mecanismo de computação

1

Meu Compute Engine vm quando implantado executa um script de inicialização. Tudo parece funcionar bem, mas há um comando no script de inicialização que eu acho que não funciona.

Eu corro o comando

apt-get update && apt-get upgrade -y

Isso deve instalar as versões mais recentes de todos os pacotes (certo?)

Quando faço isso à mão, funciona, mas leva muito tempo. Se eu deixar o script fazer isso eu não vejo nenhuma saída quando eu conecto por cima do ssh, então eu tenho que dizer que ele ainda está rodando. Existe uma maneira de ver se ainda está funcionando e se terminou ou não?

Este é o script:

#! /bin/bash
file="/var/www/check.txt"

if [ -e $file ]
then
apt-get update && apt-get upgrade -y
git -C /var/www/html pull https://xxxxxx:[email protected]/xxxxxx/xxxxx.git
else
apt-get update
apt-get install apache2 php libapache2-mod-php php-mcrypt php-mysql mysql-client -y
a2dismod autoindex
service apache2 restart

cat <<EOF > /etc/apache2/mods-enabled/dir.conf
<IfModule mod_dir.c>
        DirectoryIndex index.php index.cgi index.pl index.html index.xhtml index.htm
</IfModule>

# vim: syntax=apache ts=4 sw=4 sts=4 sr noet
EOF

rm -rf /var/www/html
git clone https://xxxxxx:[email protected]/xxxxxx/xxxxx.git /var/www/html/

cat <<EOF > /etc/apache2/sites-available/xxxxx.conf
<VirtualHost *:80>
  ServerName  xxxxxx.com
  ServerAlias www.xxxxxx.com
  ServerAdmin [email protected]
  DocumentRoot /var/www/html/wwwroot
  ErrorLog ${APACHE_LOG_DIR}/error.log
  CustomLog ${APACHE_LOG_DIR}/access.log combined
 </VirtualHost>

# vim: syntax=apache ts=4 sw=4 sts=4 sr noet
EOF

cat <<EOF > /etc/apache2/sites-available/020-xxxxx_xxxx.conf
<VirtualHost *:80>
  ServerName  xxxx.xxxxx.xxx
  ServerAlias xxxx
  ServerAdmin [email protected]
  DocumentRoot /var/www/html/xxxxx
  ErrorLog ${APACHE_LOG_DIR}/error.log
  CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

# vim: syntax=apache ts=4 sw=4 sts=4 sr noet
EOF

cat <<EOF > /var/www/html/wwwroot/.htaccess
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
EOF

sed -i 's/AllowOverride None/AllowOverride All/g' /etc/apache2/apache2.conf

wget https://dl.google.com/cloudsql/cloud_sql_proxy.linux.amd64 -O cloud_sql_proxy
chmod +x cloud_sql_proxy
mkdir /cloudsql; sudo chmod 777 /cloudsql
./cloud_sql_proxy -dir=/cloudsql &

#rm /var/www/html/wwwroot/xxxxx/xxxxxx.php


#temporary for testing.
cat <<'EOF' > /var/www/html/wwwroot/includes/xxxxx.xxxx
<?php

error_reporting(E_ALL);
ini_set('display_errors', 1);




$username = "xxxxxx";
$password = "xxxxx";
$host = "/cloudsql/snappy-gantry-xxxxx:europe-west1:db1";
$dbname = "xxxxx";

  setlocale(LC_ALL, 'nld_nld');



$options = array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8');
try {
    $db = new PDO("mysql:unix_socket={$host};dbname={$dbname};charset=utf8", $username, $password, $options);
    $db->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
    $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    $db->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);
} catch (PDOException $ex) {
    die("Failed to connect to the database: " . $ex->getMessage());
}
if (session_status() == PHP_SESSION_NONE) {
    session_start();
}
EOF


a2dissite 000-default
a2ensite 010-xxxxx_main
a2ensite 020-xxxx_help
a2enmod rewrite
service apache2 restart
apt-get update && apt-get upgrade -y
sudo cat <<EOF > /var/www/check.txt
aanwezig!
EOF
fi
    
por Lennart Giaccotto 22.11.2017 / 10:03

1 resposta

1

A saída do script de inicialização das instâncias do Google Cloud Compute Engine é gravada em um dos seguintes arquivos de registro dependendo na distribuição do Linux da instância:

  • CentOS e RHEL: / var / log / messages
  • Debian: /var/log/daemon.log
  • Ubuntu 14.04, 16.04 e 16.10: / var / log / syslog
  • SLES 11 e 12: / var / log / messages

Se, por algum motivo, você quiser armazenar atualizações do script, considere redirecionar a saída para um arquivo e fazer o upload do ID no Google Storage. Por exemplo:

  ...
$ command >> output
$ command >> output
$ gsutil cp output gs://yourbucketname/output
$ command >> output
  ...
$ command >> output
$ gsutil cp output gs://yourbucketname/output
$ ...

Note que você pode considerar redirecionar também o erro padrão com ' 2>> ' para um arquivo e enviá-lo também.

EDITAR: Esqueci-me de responder a uma das suas perguntas. Sim, você pode verificar se o comando ainda está em execução; já que do ponto de vista do sistema operacional, esses comandos são processos normais, portanto, você poderá verificá-los em execução:

$ ps -aux

Por exemplo, eu obtive essa saída com um sleep como script de inicialização

root       691  0.0  0.0   5840   696 ?        S    14:45   0:00 sleep 30
    
por 22.11.2017 / 15:21