- 投稿日:2022-03-22T23:34:23+09:00
tail -f を使ってリアルタイムのログを確認する
tailコマンドでリアルタイムログを確認するまでの経緯 発生した問題 nginx.conf等諸々設定し、EC2インスタンスのIPv4DNSからアプリ画面へアクセス確認。 →ブラウザで「応答時間が長すぎます。」と警告が表示された。 問題の切り分け 発生した問題に対して以下の手順で調査を進めました。 1.sshは接続できるがhttpで接続できるか? 2.できないとして、どこまで来てるか? 3.EC2でアクセスがきているか確認する →netstat -ano | grep :80 (Linuxのポート状況を確認に関しては以下の記事を参考に。) →/var/log/nginx/access.logを確認 → きていない。 4.まずAWS側に問題があることが一つ考えられる →AWS側は修正するとして、EC2自体からローカルアクセスしたときにアクセスできるのか? →curl 127.0.0.1叩いてローカルアクセスしてみる →404で返ってくる → webサーバー(nginx)自体は正常に動いている。 5.アプリケーション側がおかしいかも? →/var/log/php-fpm/www-error.logのログを確認 →原因となるエラー出てた。 6.EC2コンソール画面からセキュリティルールのインバウンドルールを確認し、設定に不備があったので修正。その後、ローカルではなくブラウザからアクセス確認。 →最初に出た「応答時間が長すぎます。」は出なくなり、次は404エラーが発生。 →とりあえずサーバは正常に動いた。しかし、何故404エラーが発生するのか? 7.ターミナルからtail -fでログファイルを開いた状態でブラウザアクセス →404エラーの原因をリアルタイムで確認。 →DBの設定ができてないことが判明! [root@ip-??-??-??-?? php-fpm]# tail -f www-error.log ERROR: SQLSTATE[HY000] [2002] Connection refused ・・・・ 経緯はこんな感じです。 最後の箇所でブラウザからアクセスした時にリアルタイムでログを確認しました! まとめ ターミナルからtail -fでログファイルを開いた状態にし、ブラウザからアクセスしてリアルタイムでログを確認。 デバック中はこんな感じでログを流しながら調査する方が分かりやすく、今後多く使っていくことになりそうなので記事にしてみました!
- 投稿日:2022-03-22T22:04:31+09:00
rhel 6.10 初期設定
はじめに どうもはじめまして、いつものぽんこちーなけいしーです。(´・ω・`) REHL 6.10 に触り慣れたいのと、Apacheと同時にHAクラスター導入してクラスタリング検証のためちょいとメモ走り書きで書きました。ちょっとライセンスの有効期限も短くて(焦る ホスト名の確認 hostname コメント: まじか、hostnamectl 使えないのか。w ホスト名の変更 一時的なホスト名の変更 hostname <NEW-HOSTNAME> 永久的なホスト名の変更 vi /etc/sysconfig/network HOSTNAME=vagrant-centos65.vagrantup.com ホスト名設定の有効化 /etc/rc.d/init.d/network restart ネットワーク設定 ネットワークインターフェイスの起動 ifconfig eth0 up IPアドレスの設定 ifconfig eth0 <ip-addr> netmask <subnet-mask> IPアドレスの設定確認 ifconfig eth0 デフォルトゲートウェイの設定 route add default gw <gateway> DNSの設定 vi /etc/resolv.conf nameserver 8.8.8.8 DNSの設定反映 /etc/resolv.conf restart デフォルトゲートウェイの設定-2. vi /etc/sysconfig/network GATEWAY=<gateway> GATEWAY=eth0<> デフォルトゲートウェイ設定有効化 /etc/init.d/network restart サブスクの登録(オンライン)
- 投稿日:2022-03-22T22:04:31+09:00
RHEL 6.10 でいろいろしちゃう
はじめに どうもはじめまして、いつものぽんこちーなけいしーです。(´・ω・`) REHL 6.10 に触り慣れたいのと、Apacheと同時にHAクラスター導入してクラスタリング検証のためちょいとメモ走り書きで書きました。ちょっとライセンスの有効期限も短くて(焦る ホスト名の確認 hostname コメント: まじか、hostnamectl 使えないのか。w ホスト名の変更 一時的なホスト名の変更 hostname <NEW-HOSTNAME> 永久的なホスト名の変更 vi /etc/sysconfig/network HOSTNAME=vagrant-centos65.vagrantup.com ホスト名設定の有効化 /etc/rc.d/init.d/network restart ネットワーク設定 ネットワークインターフェイスの起動 ifconfig eth0 up コメント: [nmcli]が使えない……だと……!? IPアドレスの設定 ifconfig eth0 <ip-addr> netmask <subnet-mask> IPアドレスの設定確認 ifconfig eth0 デフォルトゲートウェイの設定 route add default gw <gateway> DNSの設定 vi /etc/resolv.conf nameserver 8.8.8.8 DNSの設定反映 /etc/resolv.conf restart デフォルトゲートウェイの設定-2. vi /etc/sysconfig/network GATEWAY=<gateway> GATEWAY=eth0<> デフォルトゲートウェイ設定有効化 /etc/init.d/network restart サブスクの登録(オンライン) パッケージのアップデート確認 yum check-upgrade コメント: そもそもyumってなにがあるんかわからんかったから yum --help で少しだけ中身確認しましたわ。(´・ω・`) てかシステムバージョン確認しろしw cat /etc/redhat-release RHELとApacheの互換性について JBossの導入計画! Java (Open JDK)について コメント: なんかこんな記載が……(´・ω・`) OpenJDK 8 は、RHEL 6 ではライフサイクルの終了後に廃止となりました。1.8.0_275 は、RHEL 6 で利用可能となった最後の OpenJDK 8 アップデートでした。 OpenJDK の継続的なサポートと今後の最新のアップデートには、RHEL 7 または 8を使用する必要があります。 Java のシステム要件とか コメント: Java 8のシステム要件にはなんとか満たしているっぽい、RHEL6(´・ω・`) Javaパッケージの検索 yum search java-1.8 Java インストールについて コメント: とりあえず、今回はCLIで。 インスコうまくいくといいなあ。 Java インスコ yum install java-1.8.0-openjdk-devel.x86_64 コメント: この画像いるかわからんけど、とりあえずうまくいったくさい?
- 投稿日:2022-03-22T18:01:42+09:00
LPIC-101勉強メモ(自分用)
目次 ディレクトリ構造 Linuxシステム パーティション・ブートローダ・パッケージ管理 1. ディレクトリ構造 / → ルートディレクトリ |- bin → コマンドを格納したディレクトリ |- sbin → rootユーザのみ実行できるコマンドを格納したディレクトリ |- etc → システムやコマンドの設定ファイル・スクリプトファイルを格納したディレクトリ |- dev → デバイスファイルを格納したディレクトリ |- lib → 共有ライブラリやカーネルモジュールを格納したディレクトリ |- mnt → ファイルシステムの一時的なマウントポイント |- opt → 追加パッケージや追加プログラムをインストールするディレクトリ |- proc → カーネル内部の情報にアクセスするための仮想ファイルシステム |- root → rootユーザ専用ディレクトリ |- media → リムーバブルディスクがマウントされるディレクトリ(USB, CD-ROM) |- home → 一般ユーザのホームディレクトリ |- tmp → 一時作業ファイル保管ディレクトリ |- var → ログファイルなどの更新されるファイルの保管 |- usr → 一般ユーザが使うコマンド・ライブラリ・ドキュメントの保管 2. Linuxシステム 2.1 ハードウェア設定 Linuxカーネルが認識したデバイスの情報 カーネルでの認識なので、/procディレクトリに保管されている。 ファイル名 説明 /proc/cpuinfo CPU /proc/meminfo メモリ /proc/ioports I/Oポート /proc/interrupts IRQ /proc/bus/pci/devices PCIデバイス /proc/scsi/scsi SCSIデバイス /proc/bus/usb/devices USBデバイス デバイスファイル・デバイスドライバ Linuxの全てのハードウェアはデバイスファイルとして表される。(/dev配下にあるファイルがデバイス一覧) デバイスを利用するために必要なドライバは、カーネルモジュールとして提供されている。(lsmodコマンドで確認できる) lsusbコマンドでUSBデバイス、lspciコマンドでPCIデバイスを確認できる。(-vで詳細表示) 2.2 システムブート Linuxシステムが起動するまでの手順 電源ON BIOSの起動 (ハードウェアのチェック) ブートローダの起動 (ハードディスクからカーネルをメモリに読み込む Linuxカーネルの起動 (メモリの初期化やシステムクロックなどの設定を行う) initプロセスの起動 (システムの初期化を行い、ランレベルに応じたデーモンを起動) ログインプロンプトを表示 (この段階でブートが完了する) initプロセスの起動 initは、/etc/inittab を読み込む initは、/etc/rc.sysinit を実行する initは、/etc/rc を実行する /etc/rc スクリプトが /etc/rc[ランレベル].d ディレクトリ配下の起動スクリプトを実行する 起動スクリプト 各サービスを起動するために、/etc/init.d ディレクトリ配下にある起動スクリプトが使われる ランレベルが異なれば、起動サービスも異なる。(ランレベル1なら、/etc/rc1.d, ランレベル2なら/etc/rc2.d) 起動イベント システム起動時のイベントはログファイルに保存されている。 dmsgコマンドでシステム起動時のの処理内容を確認できる ファイル名 説明 /var/log/messages システム全般の情報 /var/log/boot.log システム起動時のプロセスがOKかfailedかを確認できる /var/log/dmesg システム起動時のメッセージが出力される 2.3 ランレベル/シャットダウン Linuxの動作モードはランレベルにより異なる。現在のランレベルはrunlevelコマンドで確認できる runrevelの結果は、「ひとつ前のランレベル、今のランレベル」という形で表示される。 Nはシステム起動後にランレベルが一度も変更されていない場合に表示される $ runlevel N 5 ランレベルの変更 コマンドは二つあるが、どちらのコマンドでもOK (root)# init [ランレベルの数字] (root)# telinit [ランレベルの数字] ランレベルの詳細は以下の図の通り ランレベル RHEL系 Debian系 0 停止 停止 1 シングルユーザモード(rootユーザだけが使用できる状態) シングルユーザモード 2 マルチユーザモード(テキストログイン・NFSサーバは使えない) マルチユーザモード 3 マルチユーザモード(テキストログイン) 〃 4 未使用 〃 5 マルチユーザモード(グラフィカルログイン) 〃 6 再起動 再起動 デフォルトのランレベル確認 /etc/inittab の最終行、id:[ランレベル]initdefault:に記述されている。 シャットダウン initコマンドではログインユーザに対してメッセ=じを通知せずに実行されるので事故の原因になる。 shutdownコマンドを使うことを推奨する。 このコマンドはroot権限で実行する必要がある。 (root)# shutdown [option] [time] {now} [message] shutdownコマンドのオプションは以下の通り オプション 説明 -h シャットダウン後にシステムを停止 -r シャットダウン後にシステムを再起動 -f 次回起動時にfsckをスキップ -F 次回実行時にfsckを必ず実行する -k シャットダウンをせずに警告メッセージを通知する -c 実行中のシャットダウンをキャンセルする shutdownコマンドの例 (root)# shutdown -h now → システムを直ちに停止する (root)# shutdown -h 20:00 → システムを20時に停止する (root)# shutdown -k now Please Logout → ログインユーザにPlease Logoutと通知する。シャットダウンは行わない。 3. パーティション・ブートローダ・パッケージ管理 3.1 パーティション Linuxをインストールするためには、最低でもルートパーティションとスワップ領域の2つのパーティションを分けることが必要になる。 一般的にはさらに多くのパーティションに分割することが多い。 ルートディレクトリと別パーティションで保管したほうがいいディレクトリ /home, /var, /opt, /usr, /tmp, /boot パーティション分割する理由は大きく分けると2つある ディスク障害の被害を最小限に食い止めることができるから 障害発生時の原因を突き止めやすくなるので復旧をスムーズに行える パーティション分割する時のポイント スワップ領域は物理メモリの2倍を確保すること /bootディレクトリの領域はおよそ100MB(本当か?) 3.2 ブートローダ ハードディスク等からOSを起動するためのプログラムのこと。 LinuxのブートローダにはGRUB2が採用されている GRUBのインストール・バージョン確認 (/dev/sdaはハードディスクのパーティションの先頭の領域) (root)# grub-install /dev/sda (root)# grub-install -v GRUB2の設定ファイル /boot/grub/grub.cfg ただし、直接編集することはできないので、以下の手順で編集する必要がある /etc/default/grubの中身を変更する update-grub2コマンドを実行すると/boot/grub/grub.cfgファイルが生成される ブートローダのカーネルオプションの設定 /proc/cmdlineで確認できる。 ブートローダの起動画面でaキーを入力すると編集画面に移行する。 例 シングルモードで起動するためのカーネルオプションの設定・情報出力の抑制 起動時に/bin/shが起動するためのカーネルオプションの設定 ルートパーティションを/dev/sda2に変更するためのカーネルオプションの設定 grub> linux /boot/vmlinuz-2.6.35 1 quiet grub> linux /boot/vmlinuz-2.6.35 init=/bin/sh grub> linux /boot/vmlinuz-2.6.35 root=/dev/sda2
- 投稿日:2022-03-22T17:59:19+09:00
Linuxのディストリビューションを調べる
hostnamectlコマンドを使う アウトプット Static hostname: my-server Icon name: computer-desktop Chassis: desktop Machine ID: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX Boot ID: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX Operating System: Ubuntu 18.04.6 LTS Kernel: Linux 5.4.0-100-generic Architecture: x86-64
- 投稿日:2022-03-22T13:15:59+09:00
パッケージ管理入門
この記事の内容 パッケージ管理ツールについて dpkg apt パッケージ管理ツール Linuxには様々なパッケージ管理ツールが存在しています。今回は、その中でもDebianやUbuntuで主に使われているdpkgとaptについて説明します。 OS系パッケージ管理 名称 正式名称 OS リポジトリ RPM RPM Package Manager Red Hatディストリビューション https://github.com/rpm-software-management/rpm yum Yellowdog Updater Modified Red Hatディストリビューション http://yum.baseurl.org/gitweb/ dnf Dandified YUM Red Hatディストリビューション https://github.com/rpm-software-management/dnf dpkg --- Debianディストリビューション https://git.dpkg.org/git/dpkg/dpkg.git apt Advanced Packaging Tool Debianディストリビューション https://salsa.debian.org/apt-team/apt Homebrew --- macOS https://github.com/Homebrew/brew dpkgとは? dpkgは、DebianやUbuntuにおけるパッケージ管理ツールです。ローカルにあるdebファイルを使いパッケージの管理を行います。 debファイルを元にツールをインストールするときは、 dpkg -i パッケージファイル名 パッケージを削除するときは、 dpkg -r パッケージファイル名 パッケージを設定ファイル含め完全に削除するときは、 dpkg -P パッケージファイル名 -lで、パッケージ一覧を表示ができる。 envader@172-19-1-2:~$ dpkg -l Desired=Unknown/Install/Remove/Purge/Hold | Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend |/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad) ||/ Name Version Architecture Description +++-===================-==============-==============-=========================================== ii adduser 3.115 all add and remove users and groups ii apt 1.4.10 amd64 commandline package manager ii base-files 9.9+deb9u13 amd64 Debian base system miscellaneous files ii base-passwd 3.5.43 amd64 Debian base system master password and grou ii bash 4.4-5 amd64 GNU Bourne Again SHell ii bsdutils 1:2.29.2-1+deb amd64 basic utilities from 4.4BSD-Lite ii coreutils 8.26-3 amd64 GNU core utilities ii dash 0.5.8-2.4 amd64 POSIX-compliant shell ii debconf 1.5.61 all Debian configuration management system ii debian-archive-keyr 2017.5+deb9u1 all GnuPG archive keys of the Debian archive ii debianutils 4.8.1.1 amd64 Miscellaneous utilities specific to Debian ii default-mysql-clien 1.0.2 all MySQL database client binaries (metapackage ii diffutils 1:3.5-3 amd64 File comparison utilities ii dpkg 1.18.25 amd64 Debian package management system ii e2fslibs:amd64 1.43.4-2+deb9u amd64 ext2/ext3/ext4 file system libraries ii e2fsprogs 1.43.4-2+deb9u amd64 ext2/ext3/ext4 file system utilities ii findutils 4.6.0+git+2016 amd64 utilities for finding files--find, xargs ii gcc-6-base:amd64 6.3.0-18+deb9u amd64 GCC, the GNU Compiler Collection (base pack ii gpgv 2.1.18-8~deb9u amd64 GNU privacy guard - signature verification ii grep 2.27-2 amd64 GNU grep, egrep and fgrep ii gzip 1.6-5+b1 amd64 GNU compression utilities ii hostname 3.18+b1 amd64 utility to set/show the host name or domain ii init-system-helpers 1.48 all helper tools for all init systems ii libacl1:amd64 2.2.52-3+b1 amd64 Access control list shared library ii libaio1:amd64 0.3.110-3 amd64 Linux kernel AIO access library - shared li ii libapt-pkg5.0:amd64 1.4.10 amd64 package management runtime library ii libattr1:amd64 1:2.4.47-2+b2 amd64 Extended attribute shared library ii libaudit-common 1:2.6.7-2 all Dynamic library for security auditing - com ii libaudit1:amd64 1:2.6.7-2 amd64 Dynamic library for security auditing ii libblkid1:amd64 2.29.2-1+deb9u amd64 block device ID library ii libbsd0:amd64 0.8.3-1+deb9u1 amd64 utility functions from BSD systems - shared ii libbz2-1.0:amd64 1.0.6-8.1 amd64 high-quality block-sorting file compressor ii libc-bin 2.24-11+deb9u4 amd64 GNU C Library: Binaries ii libc-l10n 2.24-11+deb9u4 all GNU C Library: localization files ii libc6:amd64 2.24-11+deb9u4 amd64 GNU C Library: Shared libraries ii libcap-ng0:amd64 0.7.7-3+b1 amd64 An alternate POSIX capabilities library ii libcomerr2:amd64 1.43.4-2+deb9u amd64 common error description library ii libconfig-inifiles- 2.94-1 all Read .ini-style configuration files ii libdb5.3:amd64 5.3.28-12+deb9 amd64 Berkeley v5.3 Database Libraries [runtime] ii libdebconfclient0:a 0.227 amd64 Debian Configuration Management System (C-i ii libedit2:amd64 3.1-20160903-3 amd64 BSD editline and history libraries ii libevent-2.0-5:amd6 2.0.21-stable- amd64 Asynchronous event notification library ii libfdisk1:amd64 2.29.2-1+deb9u amd64 fdisk partitioning library ii libgcc1:amd64 1:6.3.0-18+deb amd64 GCC support library ii libgcrypt20:amd64 1.7.6-2+deb9u3 amd64 LGPL Crypto library - runtime library ii libgdbm3:amd64 1.8.3-14 amd64 GNU dbm database routines (runtime version) ii libgpg-error0:amd64 1.26-2 amd64 library for common error values and message ii libgssapi-krb5-2:am 1.15-1+deb9u2 amd64 MIT Kerberos runtime libraries - krb5 GSS-A ii libjemalloc1 3.6.0-9.1 amd64 general-purpose scalable concurrent malloc( ii libk5crypto3:amd64 1.15-1+deb9u2 amd64 MIT Kerberos runtime libraries - Crypto Lib ii libkeyutils1:amd64 1.5.9-9 amd64 Linux Key Management Utilities (library) ii libkrb5-3:amd64 1.15-1+deb9u2 amd64 MIT Kerberos runtime libraries ii libkrb5support0:amd 1.15-1+deb9u2 amd64 MIT Kerberos runtime libraries - Support li ii liblz4-1:amd64 0.0~r131-2+b1 amd64 Fast LZ compression algorithm library - run ii liblzma5:amd64 5.2.2-1.2+b1 amd64 XZ-format compression library ii libmount1:amd64 2.29.2-1+deb9u amd64 device mounting library ii libncurses5:amd64 6.0+20161126-1 amd64 shared libraries for terminal handling ii libncursesw5:amd64 6.0+20161126-1 amd64 shared libraries for terminal handling (wid ii libpam-modules:amd6 1.1.8-3.6 amd64 Pluggable Authentication Modules for PAM ii libpam-modules-bin 1.1.8-3.6 amd64 Pluggable Authentication Modules for PAM - ii libpam-runtime 1.1.8-3.6 all Runtime support for the PAM library ii libpam0g:amd64 1.1.8-3.6 amd64 Pluggable Authentication Modules library ii libpcre3:amd64 2:8.39-3 amd64 Old Perl 5 Compatible Regular Expression Li ii libperl5.24:amd64 5.24.1-3+deb9u amd64 shared Perl library ii libprocps6:amd64 2:3.3.12-3+deb amd64 library for accessing process information f ii libreadline5:amd64 5.2+dfsg-3+b1 amd64 GNU readline and history libraries, run-tim ii libselinux1:amd64 2.6-3+b3 amd64 SELinux runtime shared libraries ii libsemanage-common 2.6-2 all Common files for SELinux policy management ii libsemanage1:amd64 2.6-2 amd64 SELinux policy management library ii libsepol1:amd64 2.6-2 amd64 SELinux library for manipulating binary sec ii libsmartcols1:amd64 2.29.2-1+deb9u amd64 smart column output alignment library ii libss2:amd64 1.43.4-2+deb9u amd64 command-line interface parsing library ii libssl1.0.2:amd64 1.0.2u-1~deb9u amd64 Secure Sockets Layer toolkit - shared libra ii libstdc++6:amd64 6.3.0-18+deb9u amd64 GNU Standard C++ Library v3 ii libsystemd0:amd64 232-25+deb9u12 amd64 systemd utility library ii libtinfo5:amd64 6.0+20161126-1 amd64 shared low-level terminfo library for termi ii libudev1:amd64 232-25+deb9u12 amd64 libudev shared library ii libustr-1.0-1:amd64 1.0.4-6 amd64 Micro string library: shared library ii libutempter0:amd64 1.1.6-3 amd64 privileged helper for utmp/wtmp updates (ru ii libuuid1:amd64 2.29.2-1+deb9u amd64 Universally Unique ID library ii libwrap0:amd64 7.6.q-26 amd64 Wietse Venema's TCP wrappers library ii locales 2.24-11+deb9u4 all GNU C Library: National Language (locale) d ii login 1:4.4-4.1 amd64 system login tools ii lsb-base 9.20161125 all Linux Standard Base init script functionali ii mariadb-client-10.1 10.1.48-0+deb9 amd64 MariaDB database client binaries ii mariadb-client-core 10.1.48-0+deb9 amd64 MariaDB database core client binaries ii mariadb-common 10.1.48-0+deb9 all MariaDB common metapackage ii mawk 1.3.3-17+b3 amd64 a pattern scanning and text processing lang ii mount 2.29.2-1+deb9u amd64 tools for mounting and manipulating filesys ii multiarch-support 2.24-11+deb9u4 amd64 Transitional package to ensure multiarch co ii mysql-client 5.5.9999+defau amd64 MySQL database client binaries [transitiona ii mysql-common 5.8+1.0.2 all MySQL database common files, e.g. /etc/mysq ii ncurses-base 6.0+20161126-1 all basic terminal type definitions ii ncurses-bin 6.0+20161126-1 amd64 terminal-related programs and man pages ii openssh-client 1:7.4p1-10+deb amd64 secure shell (SSH) client, for secure acces ii openssh-server 1:7.4p1-10+deb amd64 secure shell (SSH) server, for secure acces ii openssh-sftp-server 1:7.4p1-10+deb amd64 secure shell (SSH) sftp server module, for ii passwd 1:4.4-4.1 amd64 change and administer password and group da ii perl 5.24.1-3+deb9u amd64 Larry Wall's Practical Extraction and Repor ii perl-base 5.24.1-3+deb9u amd64 minimal Perl system ii perl-modules-5.24 5.24.1-3+deb9u all Core Perl modules ii procps 2:3.3.12-3+deb amd64 /proc file system utilities ii readline-common 7.0-3 all GNU readline and history libraries, common ii sed 4.4-1 amd64 GNU stream editor for filtering/transformin ii sensible-utils 0.0.9+deb9u1 all Utilities for sensible alternative selectio ii sudo 1.8.19p1-2.1+d amd64 Provide limited super user privileges to sp ii sysvinit-utils 2.88dsf-59.9 amd64 System-V-like utilities ii tar 1.29b-1.1 amd64 GNU version of the tar archiving utility ii tmux 2.3-4 amd64 terminal multiplexer ii tzdata 2020a-0+deb9u1 all time zone and daylight-saving time data ii ucf 3.0036 all Update Configuration File(s): preserve user ii util-linux 2.29.2-1+deb9u amd64 miscellaneous system utilities ii zlib1g:amd64 1:1.2.8.dfsg-5 amd64 compression library - runtime aptとは? aptは、dpkgには出来ない依存関係の管理までしてくれる、dpkgの機能を拡張したものです。またインターネットから自動でパッケージをダウンロードしてくれます。 aptの使い方 aptでパッケージをインストールするする前に、パッケージをアップデートする必要があります。 apt update パッケージをインストールするには、 apt install パッケージ名 既存のパッケージをアンインストールするには、 apt remove パッケージ名 パッケージの依存関係にある物も含めてアンインストールするには、 apt --purge remove パッケージ名 まとめ 今回は、パッケージ管理ツールのdpkgとaptについて学びました。dpkgとaptは、DebianやUbuntuでパッケージをインストールするときなどに必須となるコマンドなので、今回を機に覚えていきましょう! 実行環境 オンライン学習サービスEnvaderを使いました。 Envaderは、環境構築が不要で簡単にLinux環境が学べるので学習するのにとても便利でした。コースは、 Linux基礎 Linux応用 セキュリティー基礎 などなど 無料で使えて、初心者には難易度の高い環境構築しなくていいのでおすすめです。(一部有料) 今回学んだことをもっと深く学びたい方や新しい知識を身につけたい方は、ぜひ活用してみてください。 Envaderコース一覧 参考資料 https://envader.plus/course/5/scenario/1029/ https://eng-entrance.com/linux-package-dpkg
- 投稿日:2022-03-22T10:51:07+09:00
httpメソッドGETとGETリクエストを操作するコマンドcurlとwgetコマンドについて
この記事の内容 httpメソッドGETについて Linux環境におけるcurl,wgetコマンドについて GETメソッドとは 画像資料:https://medium-company.com/http-get-post-%E9%81%95%E3%81%84/ GETメソッドとは、HTTP通信でWebブラウザなどを通してユーザーからWebサーバへリクエストを送る際に利用されるリクエストの種類の一つです。上記の画像でいう、HTTPリクエストの部分にあたります。webサーバーに指定したURLを送信してほしいときにGETメソッドは、使われます。 また、HTTPレスポンスの確認やURLからリソースをダウンロードするコマンドに、curlやwgetがあります。次の章で、概要や使い方を説明します。 curlコマンドとは? curlコマンドの基本的な使い方 curlコマンドは、HTTPレスポンスの中身を確認するときに使用するコマンドです。 基本的な使い方は、 $ curl 指定のURL Headerのみ表示したい場合は、 $ curl -I 指定のURL # ヘッダーのみ表示 Bodyのみ表示したい場合は、 $ curl -i 指定のURL #Bodyのみ表示 curlコマンドのオプション オプション 説明 -d POSTリクエストとしてフォームを送信する -l ヘッダ情報のみ表示する -i ボディ情報のみを表示する -O 取得したデータを標準出力ではなくファイルに出力する -R ダウンロードしたファイルのタイムスタンプをサーバー上のタイムスタンプに合わせる。 -L 要求したページにリダイレクトが設定されていた場合に追従する。 引用:https://envader.plus/course/5/scenario/1026 wgetコマンドとは? wgetコマンドとは、指定したURLからリソースをダウンロードする際に使用するコマンドです。Linux環境は、基本的にCUIでダウンロードをすることがほとんどなのでwgetを使う必要があります。 また、wgetは、Linuxに標準に備わっている機能ではないので、 $ sudo apt install wget のようにインストールする必要があります。 wgetコマンドの基本的な使い方 wget`コマンドの基本的な使い方は、 $ wget https://指定したURL その後、chmodコマンドなどで実行権限を与え、wgetでとってきたダウンロード ファイルを実行 $ ./ダウンロードファイル まとめ 今回は、 HTTPリクエストのGETメソッド HTTPレスポンスの中身を確認するcurlコマンド 指定したURLからリソースをダウンロードするwgetコマンド を学びました。web開発やアプリケーションのテストの際は必ず使われるので、覚えておきましょう! 実行環境 オンライン学習サービスEnvaderを使いました。 Envaderは、環境構築が不要で簡単にLinux環境が学べるので学習するのにとても便利でした。コースは、 Linux基礎 Linux応用 セキュリティー基礎 などなど 無料で使えて、初心者には難易度の高い環境構築しなくていいのでおすすめです。(一部有料) 今回学んだことをもっと深く学びたい方や新しい知識を身につけたい方は、ぜひ活用してみてください。 Envaderコース一覧 参考資料 https://envader.plus/course/5/scenario/1026 https://medium-company.com/http-get-post-%E9%81%95%E3%81%84/
- 投稿日:2022-03-22T09:07:43+09:00
[CentOS] dm-cacheを使用してHDDのキャッシュにしたSSDを削除する
かつて設定したSSDキャッシュを削除します。 環境 CentOS Linux release 7.7.1908 Linux 3.10.0-1062.18.1.el7.x86_64 LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert [cache0] vg0 Cwi---C--- <362.79g 99.99 3.10 0.00 [cache0_cdata] vg0 Cwi-ao---- <362.79g [cache0_cmeta] vg0 ewi-ao---- 372.00m export vg0 Cwi-aoC--- <1.82t [cache0] [export_corig] 99.99 3.10 0.00 [export_corig] vg0 owi-aoC--- <1.82t [lvol0_pmspare] vg0 ewi------- 372.00m ボリュームグループ vg0 に、ロジカルボリューム export があります。 キャッシュプール cache0 があります。 まとめると、このようになっています。 役割 LV キャッシュLV vg0/export キャッシュプールLV vg0/cache0 キャッシュメタデータLV vg0/cache0_cmeta キャッシュデータLV vg0/cache0_cdata オリジンLV vg0/export_corig 作業手順 lvmcache(7)のマニュアルに従って作業します。 2通りあります。 キャッシュLVから、キャッシュプールLVを切り離すだけ lvconvert --splitcache VG/CacheLV キャッシュLVから、キャッシュプールLVを切り離して、キャッシュプールLVを削除 lvconvert --uncache VG/CacheLV 作業記録 キャッシュLVから、キャッシュプールLVを切り離してみました。 作業前 # lvdisplay vg0/export --- Logical volume --- LV Path /dev/vg0/export LV Name export VG Name vg0 (snip) LV Cache pool name cache0 LV Cache origin name export_corig (snip) キャッシュプールLVを切り離し # lvconvert --splitcache vg0/export Flushing 0 blocks for cache vg0/export. Logical volume vg0/export is not cached and cache pool vg0/cache0 is unused. 作業後 # lvdisplay vg0/export --- Logical volume --- LV Path /dev/vg0/export LV Name export VG Name vg0 (snip) LV Status available (snip) キャッシュプールの情報が消えました。 キャッシュプールLVを削除 # lvremove vg0/cache0 Logical volume "cache0" successfully removed ボリュームグループから物理ボリュームを解放 キャッシュ用に使っていた物理ボリュームを解放しました。 # vgreduce vg0 /dev/sda4 Removed "/dev/sda4" from volume group "vg0"
- 投稿日:2022-03-22T04:50:26+09:00
Envaderを利用して、Linuxでの標準入出力を体験してみる。
30代後半、未経験からIT業界のエンジニア転職へ挑戦している、kobakichiです。 今回は、Linux環境における標準入出力について学んだので、その振り返りと自分なりのまとめです。 利用した環境 今回も、環境構築が不要でLinux環境をオンラインで体験できて学べる学習サービス、Envaderを利用しました。 Envaderとはなんぞや?という方のためにリンクを貼っておきますので、よかったら参考にどうぞ。 Envader コース一覧 今回使用したシナリオ 最初に。。 今回EnvaderにてLinuxにおける入出力を体験して学びましたが、正直標準入出力の3つについて深いところまではまだ理解できていません。 ここの理解はかなり難しいなと言うのが私の感想です。 かなり深い所まで理解したい方は、@angel_p_57さんの標準入力・標準出力ってなに?やその他の記事などを読むことで深いところまで学ぶ事ができると思います。 以上のことを踏まえて、今回学んだ事の振り返りを記事にしています。 標準入出力 Linuxには、標準入力、標準出力、標準エラー出力、この3つの考え方が存在します。最初にこの表現を見たときは、え?出力って二つあるの?一つじゃないの?と不思議に思いました。 ですが、本当にこの3つの考え方、表現があるようです。 それぞれのコマンドは一つのプログラムです。Linuxのプログラムには、「1つの入り口と2つの出口」があります。それを、それぞれ標準入力、標準出力、標準エラー出力と言います。 "Linux標準教科書より引用" 以下LinuCの教科書より引用 Linuxでは、通常のファイルと同等に、ディスプレイへの出力、キーボードからの入力を扱う事ができます。キーボードからの入力もファイルの読み込みも同等に扱い、ディスプレイへの出力もファイルへの書き出しも同等に扱います。 ここに出てくるファイルの表現がなかなか理解できなかったのですが、別の記事にてこのような解説を見て、少しだけ理解できました。 一般に入力・出力というとそれなりに広い概念です。が、ここで扱っているのはファイルとしての入力・出力、つまりファイルからデータを読み込む、ファイルにデータを書き込むといった操作やデータの流れを指します。 「あれ? でもキーボードから打ち込んで…というのもファイルなのか?」と違和感を感じられるかも知れません。が、これはある意味Linux ( UNIX系OS ) の流儀です。通常のファイルも含め、バイト列としてデータを読み込んだり書き込んだり、どちらかができるものをファイルとして扱うという決めごとなのです。このファイルの中には、ネットワーク通信を行うための、ソケットと呼ばれるモノすら含まれます。 標準入力・標準出力ってなに?より引用 通常のファイルも含め、バイト列としてデータを読み込んだり書き込んだり、どちらかができるものをファイルとして扱うという決めごとと解説されています。 さらに、何やらファイルディスクリプタと呼ばれる考え方もあるようで、 プログラムが扱う操作の対象とするファイルをOSが識別するための番号も存在するとのこと。 ファイル識別子とも呼ばれるようですね。 具体的には下記のようになっています。 番号(ファイルディスクリプタ) 入出力名 デフォルト 0 標準入力 キーボード 1 標準出力 画面(端末) 2 標準エラー出力 画面(端末) 上記3つが標準的に付けられている番号で、この3つはプログラムが生成されると必ず作られるみたいです。 これ以外にも、他の出力先に割り当てられる番号として存在するそうです。 それでは、実際にEnvaderを利用しながら、この3つがどんなものなのかを体験してみたいと思います。 標準入力(stdin) 標準入力は、プログラムに入ってくるデータのことを示し、入力ストリームと表現されます。標準入力先はキーボードがデフォルトになっています。 ただ、単なるキーボードの入力だけが標準入力ではなさそうで、ここの概念的なものの理解も私にはかなり難解だったのですが、 標準入力 … 加工対象のデータの入力元や、ユーザからのパラメータ入力受付用 ( cpでの上書き確認のy/n等 ) 標準入力・標準出力ってなに?より引用 プログラムに入ってくるデータや入力元のデバイスのことです。ほとんどの場合、キーボードが標準入力先になります。 Envaderより引用 とのことで、何か入力した事、入力したデータのことを一般に標準入力として表現しても良さそうです。 envader@172-19-1-2:~$ echo "どうもありがとう" #標準入力 標準出力 プログラムの実行結果を書き出す先のことを示し、一般的にはプログラムを実行した画面(端末)が出力先になっています。 また 標準出力 … 加工済みデータの出力先や、ログ、メッセージ等情報出力用 プログラムの実行結果の出力先のデバイスです。 と@angel_p_57さんの記事やEnvaderにて解説されていますので、出力された画面の結果のことを指していることと思って良いでしょう。 envader@172-19-1-2:~$ echo "どうもありがとう"#標準入力 どうもありがとう#標準出力 標準エラー出力 プログラムの正常動作とは関係のないエラーメッセージなどの出力ストリームで、デフォルトは画面(端末)とLinuCの教科書では表現されていて、私的にはこの表現が一番しっくりきたかなと。 つまり何らかのエラーメッセージなどですね。 これまで書いてきた3つの表現への理解が難しいですが、このエラー出力だけが私の中で理解しやすかった表現で内容でした。 日本語って難しいですね。 envader@172-19-1-2:~$ eho "どうもありがとう" -bash: eho: command not found#標準エラー出力 実際にEnvaderのシナリオをやってみる ここまでの解説(というかほぼほぼ引用してしまっているが)を踏まえた上で、Envaderを体験してみたので一部だけ内容をご紹介。 標準出力だけを捨てて、標準エラー出力を取得せよ Envaderでは問題を解きながらどのような動きをするのかを学べるのですが、今回のミッションは標準エラー出力のみを取得するのがミッション。 まずはプログラムを実行してみる。 envader@172-19-1-2:~$ ./main 527ae859f224d464449c4ce1fb148defca7626650f6d7c7ec31784e529deb645 おお!何やらたくさんの文字列が出てきた。 これはプログラムを実行しているだけなのですが、これだと標準出力と標準エラー出力両方を表示している状態になってるみたいで、これだと正解にはなりません。 問題では標準エラー出力を取得することがミッション。。。。 標準エラー出力だけを取得(表示)させるにはどうすればいいか。 考えてみる。 /dev/nullへの出力 /dev/nullは、何かしらの出力をここへリダイレクトして捨てる事ができる場所です。 ただ、ここにリダイレクトしたものは復元する事ができないという事なので、ゴミ箱という表現とは少し違うみたいです。 ここで出てきたリダイレクトですが、今回の場合だと出力したデータを指定した/dev/nullへ繋ぎ変える行為です。 /dev/nullって何なの? /dev(device directory)はルートディレクトリ配下に存在している様々なデバイスファイルをまとめたディレクトリと紹介されています。 デバイスファイルとは、OSが検出、認識したデバイスを操作するためのスペシャルファイル(実際はインターフェイス)らしい。 また表現が難しいですが。。。。 とりあえず、/devディレクトリにはデバイスを扱うためのいろんなファイルが格納されている。という認識のもと、次に進みます。 続いてnullについて見て行きます。 nullはデバイスファイルで、nullデバイスやビットバケツと呼ばれることもあるとか。 こちらは仮想的なゴミ箱とされていて、擬似デバイスと呼ばれているそうです。 以上を踏まえると、dev/nullは仮想的なデバイスを扱うためのデバイスファイルに該当する。とのこと。 なんかもう、たくさんの言葉が出てきて頭がパンクしそうです。。。 ただ、先ほども書きましたが、ここへリダイレクトしたデータは全て破棄されてしまうため、復元不可能で再度データを読み込もうとしても何も読み込まれなくなってしまうので、注意が必要です。 標準出力を/dev/nullへ捨ててみる それではやっとこ、標準出力のみを指定して/dev/nullへ破棄させて行きましょう。 標準出力を指定するには、最初にご紹介したファイルディスクリプタを使用します。 プログラムが扱う操作の対象とするファイルをOSが識別するための番号がファイルディスクリプタでしたね。 番号(ファイルディスクリプタ) 入出力名 デフォルト 0 標準入力 キーボード 1 標準出力 画面(端末) 2 標準エラー出力 画面(端末) ファイルディスクリプタの標準出力は1に該当するので、こいつを指定して/dev/nullへ出力を破棄してやればいけるはず。 #./mainの後ろはスペースで、その他はスペースは入れない!ファイルディスクリプタの1を指定。 envader@172-19-1-2:~$ ./main 1>/dev/null 57e5f2d6494ef18ec7260677c18e2db4 無事正解できました。 ここで間違えそうだったのが、標準エラー出力を取得したいから、2の標準エラー出力を指定してしまいそうになりました。 それだと/dev/nullには標準エラー出力が破棄されてしまい、画面に出力されるのは標準出力が表示されてしまうので、ここが少しややこしいなと感じました。 こう書いていてもややこしい。 まとめ 今回は標準入出力について、Envaderを利用して学んできました。 ファイルディスクリプタの考え方、標準入出力の表現や考え方など、言葉にして記事にするとなかなか難しいなと感じました。 実際のシナリオにはもっと詳細な解説があり、正直理解するのにはまだ時間がかかりそうです。 今後も復習として何度も解説を読みながら、参考記事も読み込んでさらに理解を深めていきたいと思います。 最後まで読んでいただきありがとうございました。 参考にさせていただいた記事と本 標準入力・標準出力ってなに? LinuC教科書 レベル1 Linux標準教科書
- 投稿日:2022-03-22T01:34:18+09:00
curlコマンド備忘録 ※随時更新
1. はじめに 本記事では、Linuxの標準コマンドでもある『curl』コマンドのチートシート(と言う名の個人的備忘録)を記載します。 2. curlコマンドとは 2.1 curlコマンドの概要 curl は URL 指定でデータを受信(もしくは送信)するためのコマンドラインツールです。 Linuxでよく使用されるコマンドで、組み込みコマンドでもあります。 また、最近になって Windows 10 でも標準で組み込まれるようになりました。 最新版のWindows10であればコマンドプロンプトに「curl」と打ち込むことで利用できます。 2.2 基本書式 curlコマンドの基本書式は以下の通りとなります。 curl [オプション] [URL] 2.3 オプション一覧 curlコマンドで良く使用されるオプションを以下に記載します。 オプション 説明 -d, –data PARAM POSTリクエストとしてフォームを送信する -i, –include 出力結果にHTTPヘッダーを含める -s, –silent 進捗情報やエラーを出力しない -u USER[:PASS] プロキシ認証等に用いるユーザー名USER, パスワードPASSを指定する -x HOST[:PORT] プロキシサーバでのホストHOSTおよびポートPORTを指定 -I, –head ヘッダーを取得する -v, –verbose 処理の細かい情報(進捗情報等..)を出力する -L, –location リクエスト先にリダイレクト設定がある場合に追従する 詳細なオプション http://www.mit.edu/afs.new/sipb/user/ssen/src/curl-7.11.1/docs/curl.htm 3. 利用ケース 実務でよく使われるcurlコマンドの利用パターンを下記に記載します。 3.1 基本パターン # オプション無し $ curl https://<URL> # URLをファイル名としてダウンロード $ curl -O https://<URL> # 実行結果をファイルへ出力 $ curl https://<URL> > <出力先ファイル> $ curl -o <出力先ファイル> https://<URL> # ファイル出力時の進捗状況を非表示にする(エラーも非表示) $ curl -s -o 出力先PATH http://対象のURL 3.2 出力を指定する # HTTPメソッドを指定 # HTTPメソッドについて → https://masa-enjoy.com/http-method-postput#toc6 $ curl -X PUT https://<URL> # HTTPレスポンスヘッダーを取得 $ curl -I https://<URL> # リクエストヘッダやレスポンスヘッダを表示する # 「>」= リクエストヘッダ, 「<」= レスポンスヘッダ $ curl -v https://<URL> > GET /foo/ HTTP/1.1 ~~略~~ < HTTP/1.1 302 Found 3.3 経路操作 # プロキシを経由する $ curl -x <プロキシサーバ>:<ポート番号> --proxy-user <ユーザ名>:<パスワード> https://<URL> # リダイレクトを有効にする $ curl -L https://<URL> # SSLのエラーを無視して処理を実行する $ curl -k https://<URL> 3.4 認証操作 # basic認証 $ curl -user <USERID>:<PASSWORD> https://<URL> # NTLM認証またはDigest認証 $ curl --anyauth --user <USERID>:<PASSWORD> https://<URL> 3.5 小技 # F5アタック $ while :; do curl -s 'http://<URL>' >/dev/null; done # 404や200などHTTPステータスコードだけを取得する $ curl -Ss -w '%{http_code}\n' 'https://<URL>' -o /dev/null # REST API を叩いて結果だけを確認する $ curl -fsL https://<URL> 4. 参考 Qiita - よく使うcurlコマンドのオプション Qiita - よく使うcurlコマンドのオプションまとめ(14個) curl コマンド 逆引きcurlコマンドのオプション一覧