Category "Backend"を表示しています。
2018.7.27 金
AWSとかSaas系のサービスではプロンプトがローカルIPアドレスになったりするのだけどかなり見づらいので変更します。 この方法はホスト名に影響を与えないで変更するので、各ユーザーでやらないといけない設定なので、/etc/skelに設定しておく方がいいと思います。 HOSTNAME@USERNAME 00:00: という風にします。 .bashrcを開いて以下を追加します。 # シンプルなところで。 PS1="[\u@hostname \W]#" # いろいろカスタマイズしたい人は。。 PS1='\[\e[33m\]bluma@\u \[\e[34m\]\t \[\e[37m:' 使える変数がいっぱいあるのでお好みで。 反映するときは、 $ source .bashrc これでOKです。 L...
2018.3.4 日
rsyncなどの実行をWEBページインターフェイスから実行しようと思うとそもそものユーザーではなくApacheがユーザーとして実行するので思うように実行できないことがります。更にSSHでリモート接続するときは実行ユーザーが全く違うので秘密鍵を読めないということになります。 しかし開発をしているとごく頻繁にいわゆるログインユーザーとApacheユーザーを併用したいという状況が訪れます。以下のユーザーを例にして説明します。 user: sampleuser Apache: apache PHPの実行ユーザーは以下で取得できます。 posix_getpwuid(posix_geteuid())['name'] cliでコマンドラインで実行すると想定通りのsampleuserとなりますが、webから...
2018.2.28 水
Rsyncの使い方では生のコマンドラインの説明なんですが、PHPでRsync使おうとするといろいろ面倒ですが、albertofem/rsync-lib使うとすごい楽ちんです。単にRsyncのラッパーで中でコマンドラインを生成してshell_exec()しているだけというものですが、とてもシンプルでよくできています。 Packagist@ https://packagist.org/packages/albertofem/rsync-lib Github@ https://github.com/albertofem/rsync-lib インストールと入手 コンポーザーで落としてくるのが楽。すでにコンポーザーの設定している人はコンポーザー自体を落としてくる必要ないです。 php -r "copy...
2017.10.3 火
dateコマンドのフォーマット 書くまでもないんですがUNIX & Linux コマンド・シェルスクリプト リファレンスにめちゃくちゃ詳しく載ってました。 ややこしいところはここにも書いてます。 date "+%Y%m%d-%I%M%S" 「20171003-100938」というフォーマットで日付が作成されます。フォーマットはクォートで囲わなくてもいいんですが囲った方が後々楽です。 date "+%Y年%m月%d日 %I時%M分%S秒" 日本語入れても大丈夫です。「2017年10月03日 10時26分01秒」 過去の日付と未来の日付 以下のコマンドでわかりやすい形で日付作成ができるのがうれしいです。 years months days hours minutes seconds 過去...
2017.9.7 木
すごく簡単なバックアップシェルです。DBとファイルを保存して、別筐体にもコピーします。コピーはrsyncの方が速いのでscpとか使うのやめました。 あと30日前のものはバックアップのタイミングで削除されます。cronで実行する前提で作っているので基本フルパスになっています。手動でも動きますよ。 ちなみにログとかそういう機能はありません。 #!/usr/bin/bash #----------- # backup.sh #----------- # file record time record_time=`date "+%Y%m%d_%H%M"` # file backup setting backupdir="/home/user/backup" # backup file store d...
2016.12.26 月
改行コードの問題なので、CRLFをLFにしてあげるといいです。 cat -A xxx.sh 対象のshファイルを上記コマンドでみてみると^MがCRになってます。 UTF8でLFにしてやるとたいてい治ります。(とはいえ「コマンドが見つかりません」といわれるだけで実行には問題ないです。) sed "s/^M//g" xxx.sh > xxx.sh こんな感じで。 普通にローカル環境でなおしてあげるのでも全く問題ないです。 http://sunnydays-k.hatenablog.com/entry/2015/05/13/222825
2016.10.27 木
今更だけど、これめちゃくちゃ忘れる。(※あと、引数ね。) 実行するとyesかnoをタイプするまでプロンプトが待ちになります。 #!/bin/bash # Global run echo "You will transfer all files to the production environment. OK ?" read answer case $answer in yes) echo -e "Start something...\n" ;; no) echo -e "Aborted run.\n" ;; *) echo -e "Cannot understand $answer. Input yes or no.\n" ;; esac
2016.9.21 水
SSHはリモートホストをコントロールする通信方法ですが、言ってみれば相手先のサーバーにログインしてしまうと相手先のサーバー内の環境において作業をするということで…つまりはlocal環境で作業していることになります。remotehostにログインすると自分自身はlocalhostになる。ややこしいですが、そういうことです。 しかし、こちら側(localhost)からあちら側(remotehost)をリモート側としてコントロールすることはできるか?というとできます。 例えばこんな例を考えてみてください。 MySQLをDumpする。 tarでアーカイブする。 SCPで転送する。 tarを展開する。 restoreする。 この一連の動作をcronで行おうとするとき、1〜3はlocalhost側で作業...
2016.8.16 火
file_`date "+%Y%m%d_%H%M%S"`.txt file_20140409_111255.txtというファイルができます。私はたいていcronでバックアップファイルを作るときなんかに利用してます。 mysqldump -u user -h localhost -pPASSWORD sample_db sample_tbl > /tmp/dumpfile_`date "+%Y%m%d_%H%M%S"`.sql とかいうのもいいです。 dateコマンドのフォーマット dateコマンドにはフォーマットがいろいろあるでいろいろ使えます。 文字列 指定した文字列を表示する %H 時 (00〜23) %I 時 (01〜12) %k 時 ( 0〜23) %l 時 ( 1〜12) %...
2016.8.4 木
findでファイル名を検索 findはファイル名を検索します。ほんとにごく頻繁に使う便利なコマンドです。ディレクトリとファイル名を指定して検索しますが、例によってfind / -name “*”こういうコマンドはナンセンスです。検索したいディレクトリに移動してその下位ディレクトリを再帰的に検索するのかベターかと思います。 $ find . -name "*.html" ファイル数を数える ファイル数を数えるコマンドとかあったかもわからないけど、面倒なので書きだして行数数える。diffとる時なんかはこうやって書き出して比べてみるといいです。余分なファイルとか足りないファイルがあったりなかったり。 $ find . -name "*.html" > html...