SSブログ

cronにbashスクリプト登録 [Linux]

 毎日の定時バックアップ処理をbashで作成したのでcron登録した。年のせいもあるが、linuxは余り触らないので直ぐに忘れるため忘れた時のための備忘録。
cron登録はcrontab -eで直接登録する方法があるが、一番簡単な/etc/cron.d/にファイルを置く方法を選んだ。

毎日22時にmysql_backup.shを起動
# min hour day mth wday user command
0 22 * * * root /var/www/html/mysql_backup.sh > /dev/null 2>&1

cron登録
/etc/cron.d/ に上記ファイルを適当な名前で書き込む

cronの状態表示
$ sudo /etc/init.d/cron status

log確認
 /var/log/syslog

MySQLバックアップの世代管理(bash) [Linux]


UbuntuのMySQL DBのバックアップを世代管理してみたときの備忘録。
# DB名、ユーザー/パスワード定義定義
db_name="xxxx"
user_mysql="yyyy"
password_mysql="zzzz"

# バックアップ先定義
backup_dir="/tmp/backup_xxxx/"

## タイムスタンプ(書式:YYYYMMDD_HHMISS)
timestamp=`date +%Y%m%d_%H%M%S`

# バックアップファイル名定義(db_name_backup_timestamp.sql)
str="_backup_"
backup_db_file=$backup_dir$db_name$str$timestamp.sql

# バックアップ実行
mysqldump -u$user_mysql -p$password_mysql $db_name > $backup_db_file

# 7世代分より古いバックアップファイルを削除
DAYAGO="6"
ref_day=`date -d "${DAYAGO} day ago" +%Y%m%d`

ls $backup_dir|while read list
do 
  if [[ $list=_[0-9]{8}_ ]];then
    #ファイル名から日付(%Y%m%d)を抜き出し
    chk_day=`expr $list : ".*\([0-9]\{8\}\)_.*"`
    #基準日より小さい場合は削除
    if [ $chk_day -lt $ref_day ]; then
      rm $backup_dir$list
    fi
  fi
done

PHP mysqliで新規DB作成(PHP+MySQL) [MySQL]



 PHP7でmysql_xx関数が廃止になりPHP7対応で、現在のDB名xxを新規にDB名OLD_xxにしてコピーを作成するPHPスクリプトをmysqliに変更する必要が生じた。しかしmysqliで新規DBを作成をネットで検索したが検索に引っかからない。色々試して、
$link = new mysqli(host,username,passwd)でdb名を指定しないでMySQLに接続後、
$link->query("CREATE DATABASE".dbname);
で作成することができたので、この時のスクリプト。
   略
  $link = new mysqli($SV_MySQL, $USER_MySQL, $PASS_MYSQL);
  $sql = "CREATE DATABASE ".$OLD_DBName;
  if($link->query($sql)) {
    //コマンド生成
    $cmd = 'mysql' . ' -u' . $USER_MySQL;
    $cmd .= ' -p' . $PASS_MYSQL;
    $cmd .= ' ' . $OLD_DBName;
    $cmd .=  ' < ' . $filename;
    //実行
    system($cmd, $ret);
    echo $ret;
  } else {
    echo $link->error;
  }
 略


Windowsで日曜日にリブート実施 [Windows]


 Windowsを長時間運用していると不安定になることがあったので、タスクに以下のバッチを登録して毎日未明に他処理を実行、日曜日にはリブートしてみた時の備忘録。

バッチファイルから以下のようなVBSを起動して、曜日をerrorlevelで取得。
曜日の値が1(日曜日)の時にリブートを実施。

VBSスクリプト(weekday.vbs)
WScript.Quit(WeekDay(Date))

バッチファイル
他処理略
cscript /b weekday.vbs
if errorlevel 2 goto END
shutdown.exe /r /t 60
:END

weekdayの値
 曜日  値 
日曜1
月曜2
火曜3
水曜4
木曜5
金曜6
土曜7


Ubuntu16のファイルをWindows上の秀丸で編集 [Linux]

 Ubuntu16のファイルをgeditで編集しようとしたが、tSJISファイルの日本語が文字化け。文字コードを指定しようとしたが文字コードが指定できない。pluginを入れれば、文字コードが指定できるようだが、Ubuntu16上のgeditではpluginが上手く入らない。その他でも使い勝手が悪く編集作業がなかなか進まないので、
Windowsとファイル共用してWindows上の使い慣れた秀丸で編集することにした。

手順(Ubuntu側)
  • sambaのインストール
  • 対象Dirを右クリックでプロパィを表示
  • ローカルネットワーク共用tab表示
    • このフォウダーを共用する(F)をチェック共有名を入力
    • このフォルダー内でのファイル作成・削除を他のユーザに許可する(A)をチェック

手順(Windows側)
  • ネットワークドライブの割り当て
  • ドライブ(D)を指定

複数iframeの処理件数を親frameで表示 [HTML/CSS/JavaScript]


 親frameにiframeで複数の子画面を作り、そこでDB処理した処理件数を親frameに合計表示する必要がありコードを書いたときの備忘録。iframeでの処理結果はDBに反映し、処理結果は親frameからDB操作で取得可能としている。
 
iframe側複数(Javascript)
//親Frameの件数表示functionを起動
//  $henkou: 処理件数変化時->1、初期値t->0
$(function(){
  var henkou = <?php echo $henkou; ?>;
  if(henkou == 1) parent.$.parentFunc();
});

親frame側(Javascript)
//iframe側から起動されるfunction
(function($) {
  $.parentFunc = function() {
    /* ajaxで処理件数取得 */
    var syain_no = <?php echo $kaiin_no; ?>; //Javascriptに会員番号渡し
      $.ajax({
        type: "POST",
        url: "get_num.php",
        data: {"kaiin_no": kaiin_no},
        success: function(res) {
          var dt_res    = res.split(",");
          var num_n1 = dt_res[0];
          var num_n2 = dt_res[1];
          var num_n3 = dt_res[2];
          var num_goukei = dt_res[3];

          $('#i_n1').html(num_n1);
          $('#i_n2').html(num_n2);
          $('#i_n3').html(num_n3);
          $('#i_goukei').html(num_goukei);
				
         }
     });
  };
})(jQuery);

//HTML表示件数表示部
<sapn id="i_n1"><?php echo $n1 ?></span >  //n1~$goukeiは親画面初期値
<sapn id="i_n2"><?php echo $n2 ?></span >
<sapn id="i_n3"><?php echo $n3 ?></span >
<sapn id="i_gouki"><?php echo $goukei ?></span >

// get_num.php(処理件数の取得)
//    Ajaxで起動されechoで帰値渡し
<?php
 // 処理件数取得部分略
  echo $num_n1.",".$num_n2.",".$num_n3.",".$goukei; 
?>


JavascriptでGET変数取得(URL?以降の文字列) [HTML/CSS/JavaScript]


 ある理由によりLogin画面のファイル名をindex.htmlにしたい場合があった。機能としてはLogin情報を入力後、Login情報をチェックするPHPスクリプトに遷移。PHPスクリプトはLoginが有効な場合次の処理に遷移、無効な場合エラー情報をURLの後に?を付けてLogin画面に戻す。戻されたLogin画面はURLの後に?エラー情報がある場合はLogin画面にエラー情報を表示し再度入力を促す機能を有する。PHPで作成すれば簡単なスクリプトになるが、URLの?以降のGET変数をJavascriptだけで作成したときの備忘録。



Table有無確認(MySQL + PHP) [MySQL]


 PHPでMySQL上に指定したTableが存在するか否かを調べる必要があり、コードを書いたときの備忘録。
$sql=”SHOW TABLES  FROM ”.$db_name." LIKE '".$table_name."'";
if (!$result = $link->query()) {
  die("ShowTableに失敗しました(".$link->error.")");
}
if ($num_tables->num_rows == 0) {
  echo "Table ".$table_name."は存在しません。";
} else {
  echo "Table ".$table_name."は存在します。";
}

Ubuntu16にPHP5をインストール [Linux]


 Windows7上のVMwarePlayerゲストUbuntu 15を何も考えずにUbuntu16にUpgradeしたらPHP5がPHP7になり、WebDBシステムがPHP7で削除されたmysql_から始まる関数群を使用していたため動かなくなってしまった。mysql_から始まる関数はPHP5.5で非推奨となっていたので使用を止めようと思っていたが使い慣れたいたのでついつい使い続けていたのが災いしてしまった。Ubuntu16にはPHP5が含まれていないので簡単にはPHP5にダウングレードもできない。またmysql_から始まる関数を全て変更するには大変な作業となる。Web検索するとPHP5にダウングレードする方法がここにあったので参照にしてPHP7をPHP5にした時の備忘録。
//で全てのPHPに関するファイルを削除
sudo apt autoremove php
sudo apt purge php
sudo apt-get install python-software-properties
//repository追加
sudo add-apt-repository -y ppa:ondrej/phpsudo apt update
sudo apt install php5.6-fpm
sudo apt install libapache2-mod-php5
sudo apt install  php5-mcrypt


この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。