- 投稿日:2020-03-29T23:43:32+09:00
日付ではなくファイル数でログローテーションする
初めに
よく7日前のログファイルを消してローテーションのように日付が条件として使われますが、
今回は個数指定でローテーションする場合のbashサンプルを作ってみました。ローテーション対象ファイル
今回ローテーションするファイルは
server.log.YYYY-MM-DDの形式でローテーションすることとします。/var/log/server.log # 最新のファイル /var/log/server.log.2020-03-25 /var/log/server.log.2020-03-24 /var/log/server.log.2020-03-23 /var/log/server.log.2020-03-22実装
#!/bin/bash ROTATE_GEN=7 # ローテーション世代(今回は7個残す) LOG=/var/log/server.log # 対象ファイル # 日付付きでファイルを退避 mv ${LOG} ${LOG}.`date +"%Y-%m-%d"` # 現在のファイル数(FILE_CNT) - 世代数(ROTATE_GEN) # = 削除するファイル数(RM_CNT) FILE_CNT=`ls -1t ${LOG}.* | wc -l` RM_CNT=`expr ${FILE_CNT} - ${ROTATE_GEN}` # RM_CNTの数だけファイルを削除 if [[ $RM_CNT -gt 0 ]] ; then ls -1t ${LOG}.* | tail -n ${RM_CNT} | xargs rm -f fi補足
* lsのオプションは'l(エル)'ではなく'1(イチ)'
- 投稿日:2020-03-29T19:10:00+09:00
Linux Live USBを作成するコマンドを作った
はじめに
LinuxのLive USBを作成するコマンドを作成しました。(参考:Live USBとは)
今のところ実行可能環境はLinuxなので、Linux上でLive USBを作りたい人は使ってみてください。
是非Macでも使えるようにしたいですね。1. インストール
git clone https://github.com/hiwm0126/create-live-usb.git ~/.create-live-usb sudo ln -snf ~/.create-live-usb/main.sh /usr/local/bin/create-live-usb2. 使い方
ISOイメージは好きなディストリビューションのものを。各々用意してください。
例ではPeppermintを使ってます。$ sudo create-live-usb [iso image path] <-- (ex: sudo create-live-usb ~/Download/Peppermint-10-20191210-amd64.iso) ==============BLOCK DEVICE INFO================= NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 1 3.8G 0 disk └─sda1 8:1 1 3.8G 0 part mmcblk0 179:0 0 29.8G 0 disk ├─mmcblk0p1 179:1 0 63M 0 part ├─mmcblk0p2 179:2 0 1K 0 part ├─mmcblk0p5 179:5 0 32M 0 part ├─mmcblk0p6 179:6 0 256M 0 part /boot └─mmcblk0p7 179:7 0 29.5G 0 part / ================================================ which device do you want to use? ---device name list--- sda mmcblk0 ---------------------- Enter the dvice name : <-- (ex: sda) mkfs.fat 4.1 (2017-01-24) 1560281088 bytes (1.6 GB, 1.5 GiB) copied, 266 s, 5.9 MB/s 372+1 records in 372+1 records out 1562378240 bytes (1.6 GB, 1.5 GiB) copied, 266.846 s, 5.9 MB/s -------------------------------------- Creating Live USB is complete.
- 投稿日:2020-03-29T19:10:00+09:00
Linux Live USBを作成するコマンド
はじめに
LinuxのLive USBを作成するコマンドを作成しました。(参考:Live USBとは)
実行可能環境はmacOSとLinuxです。1. インストール
$ git clone https://github.com/hiwm0126/create-live-usb.git ~/.create-live-usb $ sudo ln -snf ~/.create-live-usb/main.sh /usr/local/bin/create-live-usb2. 使い方
引数で指定するISOイメージは、好きなディストリビューションのものを各自用意してください。
例ではPeppermintを使ってます。
macOSとLinuxで操作は変わりませんが、表示が少し異なるので両方紹介します。2-1. Linuxの例
$ sudo create-live-usb ~/Download/Peppermint-10-20191210-amd64.iso ==============BLOCK DEVICE INFO================= NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 1 3.8G 0 disk └─sda1 8:1 1 3.8G 0 part mmcblk0 179:0 0 29.8G 0 disk ├─mmcblk0p1 179:1 0 63M 0 part ├─mmcblk0p2 179:2 0 1K 0 part ├─mmcblk0p5 179:5 0 32M 0 part ├─mmcblk0p6 179:6 0 256M 0 part /boot └─mmcblk0p7 179:7 0 29.5G 0 part / ================================================ which device do you want to use? ---device name list--- sda mmcblk0 ---------------------- Enter the dvice name : sda <-- デバイス名を入力 1560281088 bytes (1.6 GB, 1.5 GiB) copied, 266 s, 5.9 MB/s 372+1 records in 372+1 records out 1562378240 bytes (1.6 GB, 1.5 GiB) copied, 266.846 s, 5.9 MB/s -------------------------------------- Creating Live USB is complete.2-2. macOSの例
$ sudo create-live-usb ~/Download/Peppermint-10-20191210-amd64.iso ==============BLOCK DEVICE INFO================= /dev/disk0 (internal, physical): #: TYPE NAME SIZE IDENTIFIER 0: GUID_partition_scheme *251.0 GB disk0 1: EFI EFI 209.7 MB disk0s1 2: Apple_APFS Container disk1 250.8 GB disk0s2 /dev/disk1 (synthesized): #: TYPE NAME SIZE IDENTIFIER 0: APFS Container Scheme - +250.8 GB disk1 Physical Store disk0s2 1: APFS Volume Macintosh HD - Data 107.7 GB disk1s1 2: APFS Volume Preboot 83.5 MB disk1s2 3: APFS Volume Recovery 528.1 MB disk1s3 4: APFS Volume VM 1.1 GB disk1s4 5: APFS Volume Macintosh HD 11.2 GB disk1s5 /dev/disk2 (external, physical): #: TYPE NAME SIZE IDENTIFIER 0: FDisk_partition_scheme *4.0 GB disk2 1: 0xEF 2.4 MB disk2s2 ================================================ which device do you want to use? ---device name list--- disk2 ---------------------- Enter the dvice name : disk2 <-- デバイス名を入力 460+0 records in 460+0 records out 1929379840 bytes transferred in 324.378169 secs (5947934 bytes/sec) -------------------------------------- Creating Live USB is complete.※コマンド実行はご自身の責任で行ってください。コマンド実行に関して発生した事象について、筆者は一切の責任を負いません。
- 投稿日:2020-03-29T15:48:51+09:00
LPIC-1を受けてみた感想。「おすすめ度・難易度・勉強時間」
LPIC-1を受けてみた
私は受託開発のベンチャー企業で約1年実務を経験しています。技術力と知識量を上げるため、LPIC-1を受けてみました。なので、資格で合格することが目的ではなく、資格を受ける上で学習で得られる知識が目的でした。試験に合格したので、そこで得られた情報を共有します。
この記事はこんな方におすすめ
- LPICが実務に役立つのか知りたい
- おすすめ度・難易度が知りたい
- 学習時間やおすすめの学習教材が知りたい
実務で役立つのか?
僕は結構役立ちました。以前はLinuxのことをよくわからずにその場しのぎで使用していたのですが、LPICで学習したことで体系的に知識が身につきました。
ただし、資格は手段なので別に受けなくても問題ありません。僕の場合は、明確な目標がないと学習しないのでLPICを活用しました。試験概要
- Linux技術者認定試験で、Linux技術者としての技術力を認定するIT資格
- 国際的に認められたIT資格
- 試験会場は全国(各国)
- 対象試験:101試験/102試験(5年以内に両方取得する必要あり)
- 受験料金:15,000円(合計30,000円)
- 回答方法:コンピュータを使った選択式
- 試験時間:90分
- 合格ライン:65~75%程度
試験項目
■101
- システムアーキテクチャ
- Linuxのインストールとパッケージ管理
- GNUとUnixのコマンド
- デバイス、Linuxファイルシステム、ファイルシステム階層標準■102
- シェル、スクリプト、およびデータ管理
- インターフェイスとデスクトップ
- 管理タスク業務
- 必須システムサービス
- ネットワーキングの基礎
- セキュリティおすすめ度・難易度
項目 評価(5段階) おすすめ度 3 難易度 3 例えば基本情報処理試験を目安にすると、おすすめ度3、難易度3といった具合ですね。なので、基本情報処理試験に同じくらいですね。
学習時間、おすすめの学習教材
学習時間は完全未経験なら150時間、Linuxを触っている方なら50時間くらいだと思います。
おすすめの学習方法は、あずき本と呼ばれる教科書のLinux教科書とWeb版問題集Ping-tを交互にやれば、費用も安くておすすめです。過去問は本だと問題数が限られるので、Webサイトがおすすめですね。あとは、手を動かした方が知識が定着するので、環境構築して実際に動かしたいですね。環境構築は、ドットインストールのレッスン通りにやれば簡単に構築できます。
Linux教科書が難しくて訳わかんない方は、1週間でLPICの基礎が学べる本が読むとだいぶ理解が進みますよ。LPICついてのまとめ
LPICの費用は高いですが、時間とお金を投資できるなら、体系的な知識を得られるのでおすすめす。ちなみにPing-tが申し込むと1,000円安くなるので、合計2,000円お得ですね。
参考サイト
- 投稿日:2020-03-29T13:48:40+09:00
vscodeのRemote Developmentで仮想環境にsshする
環境
- デバイス:Mac
- 仮想環境:Vagrant Ubuntu
- エディタ:vscode
プラグイン
- Remote Development
背景
- vagrantでは共有フォルダが利用できるが、vscodeでササっと開発がしたかったため、リモートにsshできるプラグインを採用。
設定方法
1.Remote Developmentをインストール
vscodeのExtensionsのアイコンで検索し、インストールしてください。2.ssh先の設定を確認
vagrantを起動するディレクトリで$ vagrant ssh-config
こんな感じで表示される
Host "ホスト名" HostName 127.0.0.1 User vagrant Port 2222 UserKnownHostsFile /dev/null StrictHostKeyChecking no PasswordAuthentication no IdentityFile /Users/{USERNAME}/vagrant/ubuntu64_18/.vagrant/machines/default/virtualbox/private_key IdentitiesOnly yes LogLevel FATAL3..sshに設定を出力させた結果を記述
$ vagrant ssh-config >> ~/.ssh/config
4.vscodeで接続してみる
画面左下に表示される><
をクリックするorコマンドパレットでRemote-SSH: Connect to Host
接続先のホスト名を選択し、接続が完了する。
5分もあればできるので、、、楽なのでオススメです( ´_ゝ`)
- 投稿日:2020-03-29T04:45:04+09:00
Supervisor入門
Supervisorとは
プロセスの制御・管理を行えるシステム。
具体的には、プロセスをデーモン化し、クラッシュした際の再起動などを行ってくれます。
例えば、私のアサインしているプロジェクトではLaravelのキューワーカーを使用し、プログラムを継続して並行稼働する際に重宝しています。
ただ、Windowsユーザーには残念ですが、UNIXライクなのでWindowsでは起動しません。
公式ドキュメント
http://supervisord.org/running.html#adding-a-programこの記事について
Supervisorの基本的な使い方について必要最小限の内容を書いていきます。
インストール
今回はAWSで適当に立ち上げたEC2インスタンス上で、実践していきます。
サーバーアクセス〜スーパーユーザー切り替え
...$ ssh -i ~/.ssh/udemy_sample2.pem ec2-user@54.65.141.153 [ec2-user@ip-172-31-37-208 ~]$ sudo su -supervisorをインストール
詳しく調べていませんが、easy_install
がいいらしいです。[root@ip-172-31-37-208 ~]# sudo easy_install supervisor Searching for supervisor Reading https://pypi.python.org/simple/supervisor/ Downloading https://files.pythonhosted.org/packages/ca/1f/07713b0e1e34c312450878801d496bce8b9eff5ea9e70d41ff4e299b2df5/supervisor-4.1.0-py2.py3-none-any.whl#sha256=a76b2f77a560f2dc411c0254a4eb15f555e99faac48621b0f1fc9ab013944f47 Best match: supervisor 4.1.0 Processing supervisor-4.1.0-py2.py3-none-any.whl Installing supervisor-4.1.0-py2.py3-none-any.whl to /usr/lib/python2.7/site-packages writing requirements to /usr/lib/python2.7/site-packages/supervisor-4.1.0-py2.7.egg/EGG-INFO/requires.txt Adding supervisor 4.1.0 to easy-install.pth file Installing echo_supervisord_conf script to /usr/bin Installing pidproxy script to /usr/bin Installing supervisorctl script to /usr/bin Installing supervisord script to /usr/bin Installed /usr/lib/python2.7/site-packages/supervisor-4.1.0-py2.7.egg Processing dependencies for supervisor Finished processing dependencies for supervisor構成ファイルの作成
[root@ip-172-31-37-208 ~]# echo_supervisord_conf > /etc/supervisord.conf構成ファイルがetc配下に置かれます。
デーモン化するプログラムの追記(個別管理しない場合)
構成ファイルを個別管理しない場合はsupervisord.confに以下のようにデーモン化したいプログラムを追記してください。
supervisord.conf[program:foo] command=/bin/catデーモン化するプログラムの追記(個別管理する場合)
構成ファイルを個別管理する場合は以下の手順で進めてください。
個別のプログラム構成ファイル保管用ディレクトリ作成
[root@ip-172-31-37-208 ~]# mkdir /etc/supervisord.dsupervisord.confの修正
変更箇所(変更前)
supervisord.conf;[include] ;files = relative/directory/*.ini変更箇所(変更後)
supervisord.conf[include] files = /etc/supervisord.d/*.confこれで、/etc/supervisord.d配下に作成する個別の構成ファイルも読み込むようになります。
個別のプログラム構成ファイル作成
[root@ip-172-31-37-208 ~]# vi /etc/supervisord.d/foo.conf以下のように作成
foo.conf[program:foo] command=/bin/cat使用するコマンドについて
supervisord
supervisorの起動に使用します。
プログラムの細かい操作等では使用しません。
supervisorctl
実行されたプログラムの操作で使用します。詳しい操作方法は以下URLを参照。
Supervisorの起動〜プログラムの実行
Supervisorを起動。
[root@ip-172-31-37-208 ~]# /usr/bin/supervisord -c /etc/supervisord.conf
/usr/bin/supervisord
だけでも起動しますが、その場合は構成ファイルの場所を順番に検索しに行く為、cオプションを使用し、構成ファイルの絶対パスを指定した方がよさそうです。構成ファイルのプログラム確認。
[root@ip-172-31-37-208 etc]# /usr/bin/supervisorctl status foo RUNNING pid 29747, uptime 0:02:30Supervisor起動時に構成ファイルに記述しているプログラムは自動で実行されるっぽいです。
試しにkill。
[root@ip-172-31-37-208 etc]# kill -9 29747 [root@ip-172-31-37-208 etc]# /usr/bin/supervisorctl status foo RUNNING pid 29761, uptime 0:00:03プロセスIDが変わり、再起動していることを確認。
プロセスを停止してみる。
[root@ip-172-31-37-208 etc]# /usr/bin/supervisorctl stop foo foo: stopped [root@ip-172-31-37-208 ~]# /usr/bin/supervisorctl status foo STOPPED Mar 29 01:17 AMプロセスが停止していることを確認。
プロセスを削除してみる。
[root@ip-172-31-37-208 etc]# /usr/bin/supervisorctl remove foo foo: removed process group [root@ip-172-31-37-208 etc]# /usr/bin/supervisorctl status [root@ip-172-31-37-208 etc]#プロセスがお亡くなりになられていることを確認。
新しいプログラムを追加し、フォアグラウンドで実行してみる。
supervisord.confに以下を追加
supervisord.conf[program:foo2] command=watch -n 1 `date`構成ファイルを読み込み、プロセス開始
[root@ip-172-31-37-208 etc]# /usr/bin/supervisorctl reread foo: available foo2: available [root@ip-172-31-37-208 etc]# /usr/bin/supervisorctl add foo2 foo2: added process group [root@ip-172-31-37-208 etc]# /usr/bin/supervisorctl status foo2 RUNNING pid 1177, uptime 0:00:04 [root@ip-172-31-37-208 etc]# /usr/bin/supervisorctl fg foo2 Every 1.0s: `date` Sun Mar 29 04:24:25 2020 sh: Sun: command not foundフォアグラウンドでの実行を確認。
Ctl+Cで抜けられます。(もちろんプロセスはデーモン化されたまま)
コマンド一覧
よく使いそうなものを抜粋しました。
status
プロセスのステータスの状態を確認。
reread
構成ファイルの読み込み。
この段階ではプログラムは追加も削除もされない。
add <name>
構成ファイルに記述したプログラムの適用(プロセス開始)。
remove <name>
停止しているプロセスの削除。
restart <name>
プロセスの再起動。
これだけでは、構成ファイルの内容は読み込まれないので注意。
stop
プロセスの停止。
start
プロセスの開始。
update
構成ファイルの再読み込み、プログラムの再起動。
設定内容に変更のあったプログラムのみ再起動される?
reload
Supervisorのデーモンの再起動。
※詳しくは公式ドキュメント参照
まとめ
便利!!!!!