投稿

ラベル(Linux)が付いた投稿を表示しています

RHEL 7でスタティック(静的)ルートを追加する4つの方法

イメージ
今回は、 Linux の ルーティング テーブル に対して、 スタティック ( 静的) ルート を 追加 する方法をいくつかご紹介します。 と言うのも、場合によっては コマンド がなかったり、設定した結果が思うように返ってこないこともあるので、どのような状況にも対応できるように、知っていても損はないと思います。 スタティック(静的)ルートとは? スタティックルート とは、管理者が宛先 ネットワーク への最適な ルート を手動で設定した ルート のことで、 ネットワーク の状態に変化があった場合でも、他に有効な宛先 ルート があっても、自動的にその ルート に切り替わることはありません。 ルーティングについてはじめから解説。 スタティックルーティングとは - www.infraexpert.com 設定内容の確認方法 ip コマンド を利用して、 ルーティング の設定内容を確認します。 ip r(route) すると、このように表示されます。 default via 192.168.100.254 dev ens160 proto static metric 100 192.168.100.0/24 dev ens160 proto kernel scope link src 192.168.100.10 metric 100 192.168.100.0/24 via 192.168.100.254 dev ens160 proto static metric 101 上の2行はデフォルトで設定されているものですね。 3行目の ルーティング 設定例を見ると、以下のように設定されています。 IPアドレス:192.168.100.0 サブネット:255.255.255.0 ゲートウェイ:192.168.100.254 インターフェース:ens160 メトリック:101 次に、以下の ネットワーク デバイス の情報を見てみましょう。 ip a このように表示されるはずです。 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 link/loopbac...

RHEL 7でスタティック(静的)ルートを追加する4つの方法

イメージ
今回は、 Linux の ルーティング テーブル に対して、 スタティック ( 静的) ルート を 追加 する方法をいくつかご紹介します。 と言うのも、場合によっては コマンド がなかったり、設定した結果が思うように返ってこないこともあるので、どのような状況にも対応できるように、知っていても損はないと思います。 スタティック(静的)ルートとは? スタティックルート とは、管理者が宛先 ネットワーク への最適な ルート を手動で設定した ルート のことで、 ネットワーク の状態に変化があった場合でも、他に有効な宛先 ルート があっても、自動的にその ルート に切り替わることはありません。 ルーティングについてはじめから解説。 スタティックルーティングとは - www.infraexpert.com 設定内容の確認方法 ip コマンド を利用して、 ルーティング の設定内容を確認します。 ip r(route) すると、このように表示されます。 default via 192.168.100.254 dev ens160 proto static metric 100 192.168.100.0/24 dev ens160 proto kernel scope link src 192.168.100.10 metric 100 192.168.100.0/24 via 192.168.100.254 dev ens160 proto static metric 101 上の2行はデフォルトで設定されているものですね。 3行目の ルーティング 設定例を見ると、以下のように設定されています。 IPアドレス:192.168.100.0 サブネット:255.255.255.0 ゲートウェイ:192.168.100.254 インターフェース:ens160 メトリック:101 次に、以下の ネットワーク デバイス の情報を見てみましょう。 ip a このように表示されるはずです。 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 link/loopbac...

443以外のSSLポートを使用するプロキシサーバ(Squid)の設定

イメージ
Squid を利用した プロキシ サーバ を経由して https 通信を行う際、通常なら 443 番の SSL ポート を許可していればよいのですが、それ 以外のポート を使用する場合は、設定ファイル( squid.conf )の 2カ所 に設定を追加する必要があります。 設定不足でエラーが出る 冒頭で「 2カ所 」と記述しましたが、察しの良い方は問題なく設定しているはずです。 squid.conf で設定が必要な箇所を一部抜粋します。 ・・・ acl SSL_ports port 443 acl Safe_ports port 80 # http acl Safe_ports port 21 # ftp acl Safe_ports port 443 # https acl Safe_ports port 70 # gopher acl Safe_ports port 210 # wais acl Safe_ports port 1025-65535 # unregistered ports acl Safe_ports port 280 # http-mgmt acl Safe_ports port 488 # gss-http acl Safe_ports port 591 # filemaker acl Safe_ports port 777 # multiling http ・・・ 著者の場合、 4343 番の SSL ポート を使用したかったので、以下の設定を追加してみました。 acl Safe_ports port 4343 すると、ログでこのような エラー が… 1234567890.123 0 192.168.100.xxx TCP_DENIED/403 3757 CONNECT example.com:4343 – HIER_NONE/- text/html ちなみに 403 エラー とは、権限がない、アクセス拒否といったものです。 Safe_portsとSSL_ports 設定内容をよく見ればわかることでした。 上記で設定した内容以外に、もう1カ所にも設定が必要です。(両方必要) acl SSL_ports port ...

bashでスラッシュ区切りの日付を簡単に比較する方法

イメージ
お得意のプログラミング言語では、簡単に 日付 比較 するための関数が用意されていますが、 Linux の シェル スクリプト ( bash )となると、 日付 の方は 文字列 なのか 数値 なのか、 if 文 比較 するために使用する 比較演算子 は何かさっぱり分からず詰まってしまったためメモします。 スラッシュ区切りの日付 まずは date を利用して、 日付 の フォーマット を YYYY/MM/DD で 変数 に格納します。 これも書き方がいっぱいあって困りました。 とりあえず代表的なのを2つだけ書いておきます。 # フォーマットは「'」や「"」で囲んでも良し。 TODAY=`date +%Y/%m/%d` # バッククオートの代わりに$()で囲む? TODAY=$(date +%Y/%m/%d) 違いがよくわからないので、詳しい方はコメントください。 前日や翌日の日付を取得する 余談ですが、 date の -d ( —date ) オプション を使って、 1日前 や 1日後 といった 日付 の取得方法もメモしておきます。 # 前日(1日前) YESTERDAY=`date +%Y/%m/%d -d "yesterday"` YESTERDAY=`date +%Y/%m/%d -d "1 day ago"` YESTERDAY=`date +%Y/%m/%d -d "1 days ago"` # 翌日(1日後) TOMORROW=`date +%Y/%m/%d -d "tomorrow"` TOMORROW=`date +%Y/%m/%d -d "1 day"` TOMORROW=`date +%Y/%m/%d -d "1 days"` if文で日付を比較 if 文の書き方がイマイチわからなくて、1番詰まったところです。 端的に言うと、 文字列 と 数値 の 比較演算子 が異なること。 そして、 括弧 の使い方もよくわかっていません。 比較演算子 例えば、AとBが同じかを調べる場合、 文字列 なら「 = 」を使いますが、 数値 なら「 -eq 」となります。 また、 数値 で大小を...

Linuxのuniqコマンドで特定の文字のみ重複する行を抽出

イメージ
例えば、 テキスト ファイル に含まれる レコード の中から 重複 した 行 を削除するには、単純に uniq コマンド を実行するだけで解決するのですが、 特定の文字 が 重複 した行を 抽出 するには、 オプション を付けて sort コマンド とも併用します。 uniqコマンドの基本 uniq コマンド は、単純に全く同じ レコード が 連続 した場合に、 重複 した 行 を 削除 して出力してくれます。 例えば、以下のような データ を含む ファイル があった場合、 111 222 222 333 uniq コマンド を実行すると、 uniq [ファイル名] 出力結果はこのようになります。 111 222 333 uniqコマンドのオプション一覧 uniq コマンド は オプション を付けることによって、 出力形式 や 比較対象 を指定することができます。 オプション(省略) 意味 -c 各行の前に出現回数を出力する -u 重複していない行だけを出力する -d 重複した行だけを出力する -D 重複する行を全て出力する -i 比較時に大文字と小文字の違いを無視する -w N 行の比較を最初のN文字で行う -s N 最初のN文字を比較しない -f N 最初のN個のフィールドを比較しない -z 最後にNULL文字を出力す オプション情報はググったらすぐに見つかりますよ! 本連載は、Linuxのコマンドについて、基本書式からオプション、具体的な実行例までを紹介していきます。今回は、「uniq」コマンドです。 【 uniq 】コマンド――重複している行を削除する - @IT 特定の文字を比較して重複行のみ抽出 冒頭でも記述した通り、 uniq コマンド だけでは離れた行にある 重複 したデータを 抽出 できませんし、 オプション を付けないと1行全てを 完全一致 で比較して、 重複 した 行 は 削除 されてしまいます。 そこで、 レコード の 並び替え を行う sort コマンド と、 -w 、 -d オプション を利用して実現します。 sortからのuniq 例えば、内容が以下のような ファイル があったとします。 ...

CentOS 8でZabbixを3系から5.0へ一気にアップグレード!

イメージ
前回は CentOS を 7 から 8 に アップグレード しましたので、しばらく古い バージョン のまま使っていた Zabbix も、これを機に一気に 5.0 へ アップグレード したいと思います。 と言っても、 OS を アップグレード するより簡単にできますので、 アップグレード 後の 問題点 をメモしておきます。 今回は、CentOS 7をCentOS 8にアップグレードする方法をご紹介します。ググってみると、いくつものサイトでいかにも簡単そうにコマンドを書いていますが、著者の場合は、そのまま実行しても上手くアップグレードできませんでした。
結果的にそれらの課題を解決したの... CentOS 7から8にアップグレードする方法(3つの問題を解決) - Minory Zabbix 5.0 アップグレード Zabbix の アップグレード は バージョン 3→4でも、4→5でも基本的には同じですので、詳細は省略させていただき、参考サイトのリンクを貼っておきます。 918 サーバ管理のお供といえばZabbix。ただ、長いこと運用をやっていると保守的な思考になってしまい、最新版が出たからといってホイホイとアップデートする気にはならなくなる。自分の環境で使っているZabbixも、ずっと長いこと3.0系のままで何年も使っていてほっ... Zabbix4.0アップデートが簡単すぎた - NorthPage 手順としては以下の通りです。 サービスを停止する バックアップを取る(特にDBや設定ファイル) RPMをアップグレードする(上書き) 設定ファイルを確認する サービスを起動する アップグレード時の注意点 著者の場合、 CentOS 8 で Zabbix 5.0 へ アップグレード する記事が見付からず、こちらの インストール 手順 を参考にしました。 はじめに2020年5月12日、Zabbix 5.0 LTSがリリースされました。久々のメジャーバージョンアップということで、各機能の大幅な変更や追加が行われています。以下公式サイトに情報がまとめられています。Zabbix 5.0LTSの新機能今回は、ミドルウェア構成としてApache + ... Zabbix 5.0 インストール手...

Linuxでファイルの改行コードLF⇔CRLFを変換する方法

イメージ
前回、 Linux で文字コードがUTF-8のファイルに対して、BOM付き⇔BOMなしを 変換 する方法をご紹介しました。 最近ではあまり意識しなくなりましたが、UTFー8にはBOM(byte order mark)という厄介な存在があります。今回は、LinuxでこのBOMを付けたり外したりする方法をご紹介します。BOMとは?BOMを簡単に説明すると、そのファイルがUnicodeで符号化されているかどうかを、先... UTF-8のBOM付きとBOMなしを変換する方法(Linux) - Minory 今回は、 改行コード の LF ⇔ CRLF を 変換 する方法をご紹介します! 3つの改行コード 面倒なことに、 OS によって 改行コード が異なります。 LF: UNIXやUnix系のシステム。Linux、AIX、Xenix、macOS、BeOS、Amiga、RISC OSなど。 CR+LF: CP/M、MP/M、MS-DOS、OS/2、Microsoft Windows。 CR: コモドールによるシステム、Apple IIファミリ、Mac OS(バージョン9まで)、OS-9。 改行コード – Wikipedia 普段からよく使う 改行コード は、 Linux の LF と Window の CRLF です。 利用する システム によっては、これらの 改行コード の違いが邪魔して、動かなかったりします。 そこで、 LF から CRLF 、または CRLF から LF に変換してみましょう。 改行コードを確認する fileコマンドを使う BOM編でもご紹介した file コマンド を利用して確認できます。 file sample.txt このように入力すると、 CRLF の場合は以下のように表示されます。 sample.txt : UTF-8 Unicode (with BOM) text, with CRLF line terminators. 「 with CRLF line terminators 」と表示されれば CRLF 、無ければ LF ということになります。 odコマンドを使う 以下のように実行すると、 od -c sample.txt 改行している箇所が「 \n ( LF ...

UTF-8のBOM付きとBOMなしを変換する方法(Linux)

イメージ
最近ではあまり意識しなくなりましたが、 UTFー8 には BOM ( byte order mark )という厄介な存在があります。 今回は、 Linux でこの BOM を付けたり外したりする方法をご紹介します。 BOMとは? BOM を簡単に説明すると、そのファイルが Unicode で符号化されているかどうかを、先頭の見えない 3バイト で表現するものです。 バイトオーダーマーク (英: byte order mark) あるいはバイト順マーク(バイトじゅんマーク)は通称BOM(ボム)といわれる、Unicodeの符号化形式で符号化したテキストの先頭につける数バイトのデータのことである。このデータを元にUnicodeで符号化されていることおよび符号化の種類の判別に使用する。 バイトオーダーマーク – Wikipedia 要は、この 先頭の見えない3バイト が邪魔して、多くのシステムで問題になっています。 LinuxでBOMを変換する まず、以下のコマンドで対象の ファイル が BOM付き か、 BOMなし なのか確認できます。 file sample.txt 実行した結果はこのように表示されます。 sample.txt : UTF-8 Unicode (with BOM) text. この「 (with BOM) 」があったら BOM付き ということですね。 逆になかったら BOMなし という事になります。 それでは 変換 していきましょう。 ここでは、 vi のオプション -c を利用して、 ファイル を開かずに BOM を 変換 していきます。 BOMなし → BOM付き BOM付き にするには、 vi で「 bomb 」をセットして保存しているだけです。 vi -c ‘set bomb’ -c ‘wq!’ sample.txt これで BOM付き になりました! BOM付き → BOM なし 反対に BOMなし にするには「 nobomb 」をセットします。 vi -c ‘set nobomb’ -c ‘wq!’ sample.txt これで BOMなし になりました! あとは先程の file コマンド で確認してみてください。

SQLPlusでのOracleリモート接続とSQLファイルを実行する方法

イメージ
Linux から SQLPlus で Oracle データベース に対し、 SQL 文を入力して実行する方法は特に問題ないと思いますが、今回は SQLPlus で 外部 から リモート 接続 し、かつ、 SQL 文が書かれた SQL ファイル を実行する方法をご紹介します。 SQLPlusでOracleにリモート接続 基本的に2種類の方法があります。 前者はそのまま データベース への接続情報を記述しますが、後者は tsnames.ora という 設定 ファイル を使って接続する方法です。 1. 設定ファイルを使用しない方法 設定 ファイル を使用せずに直接 リモート 接続 する方法は以下の通りです。 sqlplus [USER_NAME]/[PASSWORD]@[IP or HOST]:[PORT]/[SERVICE_NAME] ちなみに、サーバー指定するのはIPアドレスでもホスト名でも構いません。 2. tnsnames.oraを利用した接続方法 次の方法は、まず tnsnames.ora という 設定 ファイル に以下のように接続情報を記載します。 ファイルの場所がわからなければググってください。もしくは作成してください。 [NET_SERVICE_NAME] = ( DESCRIPTION= ( ADDRESS=(PROTOCOL = [ex:TCP])(HOST = [IP or HOST])(PORT = [PORT])) ( CONNECT_DATA= (SERVICE_NAME=[SERVICE_NAME])) ) そして、以下のように記述すると前者より簡単に接続することができます。 sqlplus [USER_NAME]/[PASSWORD]@[NET_SERVICE_NAME] こちらを参考にさせていただきました。 ## 前提Oracleクライアントがインストールされていること### 基本```C:\ &gt; sqlplus /@:/[Servic... SQLPlusでOracleにリモート接続するメモ - Qiita - Qiita SQLファイルを実行する方法 データベース に接続した後、単純に SQL ファイル を実行するには、以下のよ...

【Shell】変数内の文字列の末尾から任意の文字を削除する方法

イメージ
シェル で 変数 に格納された文字列を変更しようと思ったら、最初に思いつくのは SubString や 正規表現 などですが、そんな事をしなくても簡単に末尾から任意の文字を削除できる事を最近知ったのでメモっておきます。 ファイル名に日付を追加する 以下の例では、ファイル名の 末尾 、つまりファイル名と 拡張子 の間に現在の日付を追加するサンプルです。 BASE_NAME="Sample.log" FILE_NAME=${BASE_NAME%.*}_`date "+%Y%m%d "`${BASE_NAME#${BASE_NAME%.*}} echo FILE_NAME # 実行結果 # Sample_20201122.log こちらのサイトを参考にさせていただきました。 シェル変数の末尾の文字を削除する シェルスクリプトを書く際、変数の末尾についた余分な記号を取りたいとき、以下のように行っていた(以下、"bananapencilbook"という文字列から"book"を削除する)。OSはCentOS、シェルはbashです。 $ echo ${... シェル変数の末尾の文字を削除する - 何でも屋エンジニアのブログ - 何でも屋エンジニアのブログ 解説 上記の例では、先頭の「 ${BASE_NAME%.*} 」で後ろから検索( 後方一致 )して最初の「.(ドット)」までを除去して出力。 次に、「 _`date "+%Y%m%d " 」で「_(アンダーバー)」と日付を追加。 最後に、「 ${BASE_NAME#${BASE_NAME%.*} 」で拡張子のみを末尾に付加しています。 まとめると、こんな感じ。 ${BASE_NAME%.*} → Sample _`date "+%Y%m%d " → _20201122 ${BASE_NAME#${BASE_NAME%.*} →.log 【結果】 Sample + _20201122 + .log 拡張子 を ワイルドカード で「*(アスタリスク)」にしたのは、どんな 拡張子 が来ても対応できるようにです。 その他にも、 シェル の 変...

LighthouseでPWA対応のウェブアプリを評価する2つの方法

Linuxのtouchコマンドで連番のファイルを大量に作成する方法

イメージ
前回の記事ではログを大量に書き込む内容でしたが、今回は ファイル を一括で 大量に作成 する必要もありましたので、またメモしておきます。 以前記事にしたtailを利用したログ監視のテストとして、ログファイルに1行ずつ書く場合は単純にechoコマンドを使えばいいが、ログが一気に出力された時にちゃんと差分を見ているのか確認するには一気に複数行追加する必要がありました。当初は方法がわからなかったた... Linuxでファイルの末尾に指定した行数を一気に追加する方法 - Minory これまでの流れからすると、 繰り返し構文 を利用して作成すると思われますが、これからご紹介する内容は for は while を使いません。 強いて言うなら、 for の条件式だけ書くといったところでしょうか。 touchで大量にファイルを作成 touchコマンドとは? そもそも、 touch コマンド とは何でしょう? 著者が初めて Linux で サーバー を構築し始めた頃は、使うことのなかった コマンド です。 今回は ファイル を 大量に作成す るために使用しますが、元々の用途は 最終更新日を変更 する コマンド だそうです。 「touch」は、ファイルの最終更新日を変更するコマンドです。 「touch ファイル名」でtouchコマンドを実行した時間がファイルの最終更新日となります。 指定したファイルがない場合は、サイズが「0」のファイルが作成されます。 引用: @IT 実行例 それでは本題です。 下記は先頭に「 test 」と付く 1~10 の 連番 のテキストファイルを生成します。 touch test{1..10}.txt この コマンド を実行すると、このようなファイルが出来上がります。 test1.txt test2.txt test3.txt ・・・ ポイントは {1..10} ですね! {[開始番号]..[終了番号]} 説明するまでもないと思いましたが念のために…。

Linuxでファイルの末尾に指定した行数を一気に追加する方法

イメージ
以前記事にした tail を利用したログ監視のテストとして、ログファイルに1行ずつ書く場合は単純に echo コマンドを使えばいいが、ログが一気に出力された時にちゃんと差分を見ているのか確認するには一気に 複数行 追加する必要がありました。 今回はログを監視して、メッセージに特定の文字列が表示されたら、シェルスクリプトの指定したアクションで、メッセージの内容を利用した処理を行うのが目的です。例えば、WEBサーバーのログに「404」の文字列が表示されたらゴニョゴニョするなどです。運用・管理面... 【Linux】tailコマンドを利用してリアルタイムでログ監視 - Minory 当初は方法がわからなかったため、ログファイルを編集モードで開いて追加していましたが、今回紹介する for ( ループ )を利用した コマンド 1発で、ログファイルに 複数行 を一気に書き込むことができたのでメモしておきます。 ファイルに複数行追加 繰り返しのfor文 開発経験者なら当たり前ですが、処理を 繰り返す ために for や while といった構文が、どのプログラミング言語にも用意されています。 tail を利用したログ監視の記事では while を使用していましたね。 まずは見やすいように、 シェルスクリプト 形式で複数行&インデント付きで解説していきます。 for i in {1..10} do echo "test${i}" >> test.log done 1行目はこのようになります。 for [変数名] in {[開始]..[終了]} つまり、変数iが do ~ done の中で 1 から 10 まで 繰り返す ということ。 結果は” test~ “の後ろに連番が付きます。 1行のコマンドとして 上記の内容をたった1行の コマンド として表すとこのようになります。 for i in {1..10}; do echo "test${i}"; done >> test.log 今後、色々なテストで使えそうですね!

LinuxでApacheのAliasを設定して複数のサイトを公開する

イメージ
Linux で Apache をインストールすると、デフォルトの DocumentRoot は以下の場所になります。 /var/www/html ただし、これだと1つのWEBサーバーに対して1つのサイトしか公開できません。 複数 のサイトを公開する場合、 サブディレクトリ と サブドメイン の2種類の方法があります。 今回は Apache の Alias を設定して、 DocumentRoot 以外の サブディレクトリ を複数のサイトとして公開する方法をご紹介します。 ApacheのAliasを設定 Alias専用のconfファイル作成 直接 httpd.conf に書くと可読性が悪くなるので、 Alias 専用のファイルに分けて書くことにします。 まずは httpd.conf を開き、 vi /etc/httpd/conf/httpd.conf 以下の設定があることを確認します。 IncludeOptional conf.d/*.conf 設定がない場合は追記、コメントアウトされている場合は有効化してください。 これは、 /etc/httpd/conf.d 以下にある全ての .conf ファイルの設定を読み込むという意味です。 では、早速ファイルを作成します。 ファイル名は任意ですが、末尾に必ず .conf を付けましょう。 vi /etc/httpd/conf.d/alias.conf 次は作成したファイルにそのまま Alias 設定を記述していきます。 サブディレクトリを設定 参照したい サブディレクトリ のパスを Alias と Directory に記述します。 Alias /sample /var/www/sample <Directory "/var/www/sample"> Order allow,deny Allow from all </Directory> 解説 Alias は以下のように設定します。 Alias [公開URL] [参照するサブディレクトリ] 指定した[ 公開URL ]はサイトの サブディレクトリ として、このような URL で参照することができます。 [ 参照するサブディレクトリ ]には Do...

【Linux】tailコマンドを利用してリアルタイムでログ監視

イメージ
今回は ログ を 監視 して、メッセージに特定の文字列が表示されたら、 シェルスクリプト の指定したアクションで、メッセージの内容を利用した処理を行うのが目的です。 例えば、WEBサーバーの ログ に「404」の文字列が表示されたらゴニョゴニョするなどです。 運用・管理面では使える コマンド だと思いますが、 ログ 解析ツールが無料で世の中に出回っている昨今、あまり活躍する場面が思い浮かびませんが…。 使うかどうかはわかりませんが、覚えておいて損はないと思いもいます。 tailコマンドでログ監視 以下のような記述をすることで、指定した ログ を リアルタイム で 監視 することができます。 tail -n 0 -F /path/to/log オプション の解説は後程ご紹介します。 まずは、 シェルスクリプト のサンプルを作成してみましたのでご覧ください。 サンプルスクリプト #!/bin/bash target_log="/var/log/httpd/error_log" search_word="404" sample_action() { while read i do field2=`echo ${i} | grep "${search_word}" | awk '{print $2}'` if [ -n "${field2}" ]; then echo ${field2} fi done } tail -n 0 -F ${target_log} | sample_action exit まずは末尾をご覧ください。 上記の例では、 ログ を 監視 すると同時に新しいメッセージが追加されたら、 sample_action() 関数を実行します。 sample_action() の中では、追加されたメッセージに” 404 “の文字が含まれるかを grep コマンド で検索し、見つけたら awk コマンド で第2フィールドを抽出して echo で表示するものです。 オプション解説 -n 末尾から表示する行数を指定。 ここでは標準出力しないように”0″を指定。 -F [...

Linuxサーバーで起動時に1回だけ実行するCronを設定する

イメージ
以前、 Cloud9 を 自宅サーバー ( CentOS 7 )にインストールした記事は覚えているでしょうか? Cloud9 を起動するには Node.js で実行してあげる必要があります。 この度、AWSに買収されたCloud9のサービスが終了となりますので、今まで構築してきたデータを移行する先として、AWSではなく自宅サーバー(CentOS 7)にCloud9をインストールして、これまでと同じように利用できる環境を構築したいと思います。Cloud9をインストール... 自宅サーバー(CentOS 7)にCloud9をインストールする方法 - Minory しかし、一度シャットダウン、またはリブートしてシステムが起動した後に手動で実行するのは面倒です。 そこで、今回は システム起動時に1回だけ自動で特定のコマンドを実行 するよう、 Cron で設定する方法をご紹介します。 日時に”@reboot”を指定する Cron には、普段 日時 を設定している箇所に入力する、数字やアスタリスク(*)の代わりとなる構文が用意されています。 システム起動時に1回だけ実行する場合は、 @reboot を利用します。 @reboot root sh /path/to/hoge.sh 他にも、1時間に1回実行する @hourly や1日1回実行する @daily 、1月に1回だけ実行する @monthly なんかもあります。 詳しくは参考サイトをどうぞ! システム起動時に特定のコマンドを実行するには − @IT - www.atmarkit.co.jp これを使うと、 サービス の自動起動っぽく使えますね!

【Linux】シェルスクリプトからsendmailでメールを送信する方法

イメージ
バックグラウンドで処理を実行している場合、正常に処理が終了したのか確認したい場合があります。 モニターに表示するのも1つの手ではありますが、活動時間外やその場にいない時は、 メール で送信してくれるととても便利ですよね。 そこで今回は、 Linux で メール 送信をする簡単な シェルスクリプト をご紹介します。 sendmailでメール送信 まず前提として メール が送信できるサーバであること。 ここでは sendmail コマンド を利用します。 メール内容を作成 送信したい メール の内容を テキスト ファイル で作成します。 vi mail.txt ファイル名は任意です。 内容は以下の形式に従って作成します。 From: <[送信元]> To: <[宛先]> Subject: [件名] [本文] From: 、 To: の<>内にそれぞれ送信元と宛先の メールアドレス を。 それから、 Subject に メール のタイトル、一行空白の改行を入れて本文を記載します。 メールを送信 あとは、 sendmail コマンド を実行する際に、先程作成した テキスト を指定してあげればOKです。 cat mail.txt | sendmail -i -t i と t の オプション が気になる方はググってください。 文字コードや日本語対応 今回はこちらの記事を参考にしました。 プログラムからメールを送信したいなーと思ったことありますよね。そんな時、どうやってますか?何らかのプログラミング言語でメール送信用のライブラリーの使い方調べて組む?いやいや、そんなことしなくてもシェルスクリプト(と基本的なコマン... シェルスクリプトでメール送信、「さようならnkf」編 - Qiita - Qiita 文字コード を指定して 日本語 の メール を送信しても 文字化け しないように対策できるようなので、皆さんもぜひ試してみてください。

ログを出力しないプロセスをバックグランドで実行する方法

イメージ
開発メモです。 例えば、 Linux である コマンド を実行する場合に、 実行 ログ や エラー ログ も必要なく、 バックグラウンド で実行する方法です。 ネットでは 標準エラー は残しておくべきだとの意見が多いですが、 エラー が発生しても無視したいので、ここではそれすら残さないようにします。 ログを残さない! 頻繁に同じ プロセス を実行する際、その処理が膨大だった場合、そしてその膨大な処理に何らかの不具合が発生した場合、出力される ログ も膨大になってしまいます。 しかも、 ログ にはほぼ同じ内容が出力されるはずです。 特に検証済みで、結果を確認しなくて良い、もしくは、 エラー が発生しても無視して問題ないのなら、 ログ を出力しない方が良いこともあります。 全ての出力結果を捨てる 早い話、書き方は以下の通りです。 command > /dev/null 2>&1 出力結果を捨てる[ > /dev/null ]と、 エラー出力 の結果を 標準出力 の結果と マージ する[ 2>&1 ]を組み合わせています。 つまり、エラーと実行の ログ を一緒にして 捨てる ということです。 詳しくは、参考サイトをご参照ください。 ## 質問- `command > dev/null 2>&1`ってよく書いてませんか?- crontabでよく書いてませんか?- でもそれ、前のcrontabコピペして書いてませんか?- 実は意味を理解せずに書いてません... いい加減覚えよう。 `command > /dev/null 2>&1`の意味 - Qiita - Qiita バックグラウンドで実行する これは調べればすぐに出てきました。 末尾に「 & 」を付けるだけのようですね。 command & これだけです。 特に説明の必要はありませんね。 著者には利用する場面を想像できませんが、巷では プロセス 実行中に バックグラウンド に切り替る情報が多かったです。 ログを残さずバックグラウンドで実行 いよいよ実行方法です。 上記で記述した2つの内容を単純に掛け合わせればできあがるのですが、書く 順番 が重要な...

【pkill】プロセス名を指定して一括終了できる便利なコマンド

イメージ
今まで特定の プロセス を終了する際は、 ps コマンド で対象の PID (プロセスID)を調べて、 kill コマンド で終了する方法を行っていましたが、今更ですが「 pkill 」なる存在を知りました! コレがまた便利なの何だのって…感動モノです。 実際に2種類の方法を比較してみましょう! psからのkill 通常はこのように プロセス を探し出し、 ps aws | grep [プロセス名] PID を確認した後、 kill [PID] で終了させるのですが、終了したい プロセス が複数ある場合、 kill コマンド で PID を指定して1つずつ終了させなければなりません。 上手に組み合わせて スクリプト を作った方もいらっしゃいました。 ps aux | grep [プロセス名] | grep -v grep | awk '{ print "kill -9", $2 }' | sh 引用: プロセス名でgrepした結果をkillするシェルスクリプトを作る – Qiita pgrepからのpkill 対して、 pkill では プロセス名 で一気に終了させることができます。 pgrep は他の プロセス を間違えて消さないために確認として実行しておきます。 pgrep -f [プロセス名] で PID が確認できたら、 pkill [プロセス名] これだけで一発で終了できます! なんと素晴らしいことでしょう! 本連載は、Linuxのコマンドについて、基本書式からオプション、具体的な実行例までを紹介していきます。今回は、プロセス名を指定してプロセスを終了させる「pkill」コマンドです。 【 pkill 】コマンド――名前を指定してプロセスを終了させる - @IT こちらの参考サイトでは、同じように一括で プロセス を終了できる「 killall 」も紹介していますので、ぜひご覧ください。

CentOS 7でVPN(L2TP/IPsec)サーバを構築してiPadから接続する方法