"Christmas - the time to fix the computers of your loved ones" « Lord Wyrm

bash script um mysql qouta anzeigen zu lassen

maze92 21.02.2015 - 21:55 2988 2 Thread rating
Posts

maze92

Little Overclocker
Avatar
Registered: Jan 2008
Location: Wollsdorf
Posts: 91
Hey,

Ich bin recht neu auf dem gebiet scripte und mysql, hab mir aber ein kleines script gebastelt,
wenn ich die befehle ganz normal eingebe funktioniert es, aber im script wills net funktionieren...

Code: SHELL
mysql -h localhost -u root -pPASS
SELECT 
  table_schema AS 'Datenbankname',
  Round( SUM( data_length ) / 1024 / 1024, 3 ) AS 'Daten (MB)',
  Round( SUM( index_length ) / 1024 / 1024, 3 ) AS 'Index (MB)',
  Round( Sum( data_length + index_length ) / 1024 / 1024, 3 ) AS 'Gesamt (MB)',
  Round( Sum( data_free ) / 1024 / 1024, 3 ) AS 'Freier Speicher (MB)'
FROM information_schema.tables
GROUP BY table_schema ; 

Ausgabe sollte so aussehen:
Code:
+--------------------+------------+------------+-------------+----------------------+
| Datenbankname      | Daten (MB) | Index (MB) | Gesamt (MB) | Freier Speicher (MB) |
+--------------------+------------+------------+-------------+----------------------+
| information_schema |      0.000 |      0.009 |       0.009 |                0.000 |
| mysql              |      0.556 |      0.097 |       0.652 |                0.001 |
| ownclouddb         |      3.328 |      1.469 |       4.797 |              168.000 |
| performance_schema |      0.000 |      0.000 |       0.000 |                0.000 |
+--------------------+------------+------------+-------------+----------------------+
4 rows in set (0.01 sec)

Aber wenn Ich es ausführe funktioniert zwar der login aber nicht mehr.
im endeffekt schaut es dann so aus:

Code: SHELL
mzengerer@srv:~$ ./sql-quota.sh
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 7786
Server version: 5.5.41-0ubuntu0.14.04.1 (Ubuntu)

Copyright (c) 2000, 2014, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> ^CCtrl-C -- exit!
Aborted
./sql-quota.sh: Zeile 3: SELECT: Kommando nicht gefunden.
./sql-quota.sh: Zeile 4: table_schema: Kommando nicht gefunden.
./sql-quota.sh: Zeile 5: Syntaxfehler beim unerwarteten Wort »SUM«
./sql-quota.sh: Zeile 5: `  Round( SUM( data_length ) / 1024 / 1024, 3 ) AS 'Daten (MB)','
mzengerer@srv:~$

Irgendwelche Ideen dazu?

lg, maze92

COLOSSUS

Administrator
GNUltra
Avatar
Registered: Dec 2000
Location: ~
Posts: 12069
Code: SHELL
#!/bin/bash
mysql -h localhost -u root -pPASS <<EOF
SELECT 
  table_schema AS 'Datenbankname',
  Round( SUM( data_length ) / 1024 / 1024, 3 ) AS 'Daten (MB)',
  Round( SUM( index_length ) / 1024 / 1024, 3 ) AS 'Index (MB)',
  Round( Sum( data_length + index_length ) / 1024 / 1024, 3 ) AS 'Gesamt (MB)',
  Round( Sum( data_free ) / 1024 / 1024, 3 ) AS 'Freier Speicher (MB)'
FROM information_schema.tables
GROUP BY table_schema ;
EOF

So sollte es klappen. Hab keine mysql-Shell in Reichweite, um das auszuprobieren.

-=Willi=-

The Emperor protects
Avatar
Registered: Aug 2003
Location: ~
Posts: 1624
Erklärung dazu warums nicht funktioniert: Jede Zeile in einem Bash-Script wird für sich ausgeführt. In deinem Script öffnest du in der ersten Zeile eine MySQL-Shell. Wenn du mit Ctrl+C dann rausgehst gehts ist der Befehl `mysql` abgeschlossen und es geht mit der zweiten Zeile, nämlich SELECT, weiter. Das ist etwas, was die Shell nicht interpretieren kann. Deshalb "SELECT: Kommando nicht gefunden.".

Du musst also dem Befehl `mysql` die Query irgendwie anders mitgeben was mit der von COLOSSUS gezeigten Here-Document-Syntax beispielweise geht.
Kontakt | Unser Forum | Über overclockers.at | Impressum | Datenschutz