- 投稿日:2021-03-29T22:25:48+09:00
Fedora 34 Beta
Fedora 34 Beta がリリースされました。
DistroWatch記事 ←クリック(新窓)
インストールしましたが、お勧めはしません。
ちょっと問題ありそうです。
*Wifi が不安定(実はこれは32辺りから?)
*アップデートが頻繁で多いようです。
Beta 発表から2日で1GBを超えるReplacement
今はもっと多いかもしれません?
*デスクトップ環境によっては重くて動かなくなります。
テストに用いたのはFMV i5 memory4GB
特にPlasma KDE は何度も止まります。お馴染みのインストール画面
お馴染みの? Beta 警告文字
発表2日後に800MB超えるアプデ 多すぎるReplacement
Fedora 34 Stable の発表はいつになるか?
個人的には、もうちょっと待ったほうが良いと思います。ではでは!
- 投稿日:2021-03-29T19:14:59+09:00
cron による Minecraft サーバのプロセス自動再起動設定
概要
- systemd サービスユニットファイルを作成して、Minecraft サーバをサービス化
- cron で定期的に systemctl コマンドを発行するシェルスクリプトを実行し、サービスの状態をチェック
- サービスがダウンしていた場合、再起動
Minecraft サーバの設定方法
Linux(CentOS7)で、Minecraftマルチサーバを立ち上げる手順
環境
- CentOS 7
シェルスクリプト作成
作業ディレクトリに移動し、シェルスクリプトを編集する。
# cd /var/minecraft # vi auto_restart.shシェルスクリプトの内容は以下の通り。
auto_restart.sh#!/bin/bash systemctl is-active minecraft_server.service >/dev/null 2>&1 if [ $? != 0 ]; then systemctl start minecraft_server.service fi exit
systemctl is-active
は、サービス実行中は 0 を、そうでない場合は 0 以外の値を返す。詳しくはman systemctl
で参照できる。cron 設定
以下のコマンドを実行する。
# echo "*/10 * * * * root /var/minecraft/auto_restart.sh" > /etc/cron.d/minecraft_auto_restart上記は、毎時 0 分, 10 分, 20 分, 30 分, 40 分, 50 分に auto_restart.sh に実行する設定なので、必要に応じて実行間隔を調整する。
- 投稿日:2021-03-29T15:29:54+09:00
更新ファイルのリスト取得
基本的なことだと思いますが、苦労したので、備忘録として書きます。
間違っているものなどありましたらご指摘いただけますと幸いです。ディレクトリ配下の全ファイルの中から、今日更新されたもの、もしくは、今さっき更新されたものの一覧を取得します。
今日の更新ファイル一覧
find ディレクトリ名 -type f -mtime 0 -ls ls -lrt ディレクトリ名 `find -type f -mtime 0`10分以内の更新ファイル一覧
find ディレクトリ名 -type f -mmin -10 -ls find ディレクトリ名 -type f -mmin -10 | xargs -r ls -lrt時間を変更するときは、-10のところをいじってください。
-mminの引数 意味 -100 現在から100分以内 +10 10分より前(10分以内の逆) 注意点
ディレクトリ名を省略した場合、カレントディレクトリ以下の検索になります。
一番上の階層でこのコマンドを入力すると、このサーバ、PCで更新されたすべてのファイルリストを取得できます。-lrtや、-lsは個人的に見やすくするために使用しているだけなので、適宜変更できます。
- 投稿日:2021-03-29T13:56:43+09:00
対象OSのポート(開閉状態)を外部からnmapで確認する方法
環境
■ポートの開閉を確認したいOS
Amazon Linux2
■ポートの開閉を確認するためのOS
Ubuntu(ver 16.04.4)初めに
Amzon linux2にiptablesを用いてポートにフィルタリングをかけます。
その後、他OS(Ubuntu)のNmapを利用してポートのフィルタリングを確認する方法を備忘録として記載します。
今回は、25、80、111番のポートにフィルタリングをかけます。参照サイト
https://knowledge.sakura.ad.jp/4048/
https://qiita.com/Tocyuki/items/6d90a1ec4dd8e991a1ceiptables、Nmapの導入
まず初めにAmazon Linux2にiptablesを導入します。
Amazon Linux2でiptablesを利用するにはiptables-servicesが必要ですのでyumを使ってインストールします。yum -y install iptables-servicesそうすると、/etc/sysconfigの配下に2つのファイルが生成されます。
/etc/sysconfig$ ls | grep iptables iptables iptables-config次に、Ubuntu(ポートの開閉を確認するためのOS)にNmapを導入します。
sudo apt-get install -y nmap何も設定していない状態のAmazon Linux2のポート番号を確認
$ nmap localhost Starting Nmap 6.40 ( http://nmap.org ) at 2021-03-29 12:47 JST Nmap scan report for localhost (127.0.0.1) Host is up (0.0000030s latency). Not shown: 995 closed ports PORT STATE SERVICE 22/tcp open ssh 25/tcp open smtp 80/tcp open http 111/tcp open rpcbind 443/tcp open https Nmap done: 1 IP address (1 host up) scanned in 0.03 secondsポート番号22、25、80、111、443番がopenになっていることを確認。
25、80、111番のポートにフィルターをかけてみます。ポート番号にフィルターをかける
viで先ほど生成されたiptablesファイルを編集します。
/etc/sysconfig$ vi iptables ~略~ *filter :INPUT ACCEPT [0:0] :FORWARD ACCEPT [0:0] :OUTPUT ACCEPT [0:0] -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT -A INPUT -p icmp -j ACCEPT -A INPUT -i lo -j ACCEPT -A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT -A INPUT -j REJECT --reject-with icmp-host-prohibited -A FORWARD -j REJECT --reject-with icmp-host-prohibited COMMITデフォルトでは上記のような構造になっています。
iptablesには4つのテーブルが存在し、今回はfilterテーブルに記載します。*filterとCOMMITの間に設定を記載します。
それでは25、80、111番のポートにフィルターをかける設定をしていきます。
/etc/sysconfig$ vi iptables ~略~ -A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT -A INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j DROP ・・・この行を追記 -A INPUT -p tcp -m state --state NEW -m tcp --dport 25 -j DROP ・・・この行を追記 -A INPUT -p tcp -m state --state NEW -m tcp --dport 111 -j DROP ・・・この行を追記 COMMIT一番右に記載してあるDROPでポート番号にフィルターをかけて、パケットを通さない設定です。
対してACCEPTは通信可能な設定になっています。viを保存してiptablesを再起動します。
/sbin/service iptables restartUbuntuのNmapを利用して確認してみます。
$ nmap -p 80,22,111,25,443 -Pn Linux2の使用しているIPアドレス Host discovery disabled (-Pn). All addresses will be marked 'up' and scan times will be slower. Starting Nmap 7.91 ( https://nmap.org ) at 2021-03-29 16:02 JST Nmap scan report for linux-practice.example.com (Linux2の使用しているIPアドレス) Host is up (0.0013s latency). PORT STATE SERVICE 22/tcp open ssh 25/tcp filtered smtp 80/tcp filtered http 111/tcp filtered rpcbind 443/tcp open https Nmap done: 1 IP address (1 host up) scanned in 1.25 secondsこれで25、80、111番にフィルターがかかっていることを確認できました。
以上になります。
ありがとうございました。
- 投稿日:2021-03-29T12:53:36+09:00
【初学者殺し】fishシェルでPATHを通してみる
はじめに
プログラミングを始めてから1年半、シェルはずっと
zsh
を使っていたのですが、知り合いにオススメされてfish
デビューしました。fishってどんなヤツなん?使ったらどんないいことあるん?ってのは、他の記事にたくさんまとまっているので、そちらを参考にしてください!
初学者殺しの「PATHを通す」
初学者殺しでおなじみ「PATHを通す」について、
fish
でもbash
やzsh
と同じように~/.config/fish/config.fish
に設定を書くことで実現できるのですが、fish
にはfish_user_paths
というユニバーサル変数(全てのセッションで共通の変数)を使うことでPATHを通すことができるようなので、そちらの方法でやってみます。fish_user_pathsって何?なぜ使う?
fish shellのPATH設定 - Qiita に詳しく書かれておりますので、気になる方はご確認くださいませ。
(この後出てくるset
コマンドのオプションについてはfishパス関連設定した時の備忘録でまとめられています。)PATHを設定してみる
ユニバーサル変数
fish_user_paths
に通したいPATHをセットし、PATHを通します。(同じこと2回言ってる...?)PATH と fish_user_pathsの中身を見てみる
まずは、中身を見てみます!
PATHの中身を表示$ echo $PATH //PATHの頭に"$"をつけることで、中身を表示することができる。他の環境変数も同様。 /usr/local/bin /usr/bin /bin /usr/sbin /sbin /Library/Apple/usr/binfish_user_pathsの中身を表示$ echo $fish_user_paths //PATHと同様に、fish_user_pathsの頭に"$"をつけることで、中身を表示することができる。 (何も出力されない)たぶん初期設定ママだとこうなると思います。(この通りにならなくても気にせず先へ進みましょう!)
fish_user_paths に追加してみる
今回は、
「zsh
時代に使っていたanyenv
コマンドがfish
シェルに変えたら使えなくなった(= PATHが通っていない)」
という状況を想定して考えてみます。たとえば、PATHを通すために
.zshrc
にexport PATH=$HOME/.anyenv/bin:$PATH
と書いていたなら、$HOME/.anyenv/bin
が追加対象になります。追加するときは、
set
コマンドに、-U
のオプションをつけてあげます。(-Uのオプションをつけることで、)fish_user_pathsに追加$ set -U fish_user_paths $HOME/.anyenv/bin $fish_user_paths $ echo $fish_user_paths /Users/(ユーザー名)/.anyenv/bin ←(ユーザー名) にはみなさんのPCのユーザー名が入ります
fish_user_paths
に/Users/(ユーザー名)/.anyenv/bin
が追加されたかと思います。ちなみに、
HOMEの内容を表示$ echo $HOME /Users/(ユーザー名)なので、さっきのやつは
fish_user_pathsに追加$ set -U fish_user_paths /Users/(ユーザー名)/.anyenv/bin $fish_user_paths $ echo $fish_user_paths /Users/(ユーザー名)/.anyenv/binでも同じ結果になります。
では、PATHの中身を確認してみましょう。
PATHの中身を表示$ echo $PATH /Users/(ユーザー名)/.anyenv/bin /usr/local/bin /usr/bin /bin /usr/sbin /sbin /Library/Apple/usr/bin初期設定で持っていたものに、今回
fish_user_paths
に追加したものが追加されています。これで、
anyenv
コマンドがこれまで通り使えるようになりました。つまり、
PATH
にもともと入っていた/usr/local/bin /usr/bin /bin /usr/sbin /sbin /Library/Apple/usr/binに、
fish_user_paths
の内容を加えたものがPATH
となります。豆知識
| tr ' ' '\n' | nl
をつけて出力すると、イイ感じに見やすくなります。スペースで改行し、ナンバリングしてfish_user_pathsの中身を表示$ echo $fish_user_paths | tr ' ' '\n' | nl 1 /Users/(ユーザー名)/.anyenv/binスペースで改行し、ナンバリングしてPATHの中身を表示$ echo $PATH | tr ' ' '\n' | nl 1 /Users/(ユーザー名)/.anyenv/bin 2 /usr/local/bin 3 /usr/bin 4 /bin 5 /usr/sbin 6 /sbin 7 /Library/Apple/usr/binfish_user_pathsから任意のパスを削除する
fish_user_paths
は配列なので、特定のパスを削除する場合はインデックスを指定して削除する(インデックスは0ではなく1から始まるので注意)まずは中身を確認して
インデックスを指定して、特定のfish_user_pathsを出力$ echo $fish_user_paths[1] /Users/(ユーザー名)/.anyenv/bin
/Users/(ユーザー名)/.anyenv/bin
を消してみます。消す時は、set
コマンドのオプションに-e
をつけます。インデックスを指定して、特定のfish_user_pathsを消す$ set -e fish_user_paths[1] $ echo $fish_user_paths (何も出力されない)はい、消えました。
ここでのポイントは、
set -e fish_user_paths[1]
で、fish_user_paths[1]
の頭に$
がついていないことです。$
をつけるとエラーになります。追加するときも、第一引数の環境変数(
fish_user_paths
)には$
がついていませんね。$ set -U fish_user_paths $HOME/.anyenv/bin $fish_user_paths
$
はあくまで、内容を表示するときにつけます。fish_user_pathsの中身を全部削除する
ちなみに、
set -e fish_user_paths[1]
では「fish_user_path
配列の1番目の要素を消す」でしたが、set -e fish_user_paths
とインデックスを指定しない場合は全部一気に消えます。インデックスを指定せず、fish_user_pathsの中身を全部消す$ echo $fish_user_paths 1 /Users/(ユーザー名)/.anyenv/envs/nodenv/shims 2 /Users/(ユーザー名)/.anyenv/bin 3 /Users/(ユーザー名)/.rbenv/shims (たとえば、fish_user_pathsに3つ入ってる状態) $ set -e fish_user_paths $ echo $fish_user_paths (何も出力されない)まとめ
これまで「PATHを通す」時は、記事を見て言われるがままに
export PATH=$HOME/.anyenv/bin:$PATH
みたく設定をコピペし、「何だか分からないけど動くようになった...」というレベルだった自分ですが、今回のやり方を通じて「環境変数PATH
に値をセットすることでPATHを通す」ということがようやく少し理解できました。「シェルに詳しいわけではないけれどfishを使い始めた(これから使いたい)!」という人のお役に立てたら幸いです。
参考