Linux (CentOS7) メモ
(2006.12.10 - 2019.6.19)
CentOS 5-6はこちら
以下の表で,プロンプトが#のコマンドはスーパーユーザー,$は普通のユーザで実行.
Cent OS
商用のRed Hat Enterprise Linux(RHEL)と完全互換のフリーのLinuxディストリビューション.Community ENTerprise Operating System.
CentOS 7.x
2019-12-31まで更新2024-6-30までメンテナンス。
OS version # cat /etc/redhat-release
マシン・OS情報 $ uname -a
CPU情報 $ cat /proc/cpuinfo
メモリ情報 $ cat /proc/meminfo
デバイス名 # fdisk -l
HDD/SSD情報 # smartctl -a デバイス名
2TB超HDD 4TB超のHDDにCentOS6をインストールするには。
HDD増設 内蔵HDD, USB外付HDDの増設。
管理
GUIで管理
GUIでサーバーを管理するときは,rootでログインすること.普通のユーザでログインするとGUIツールのバグで設定が正しく行われない.
SELinux無効化
/etc/sysconfig/selinuxのSELINUX=enforcingをSELINUX=disabledに書き換える。この設定を誤り,OSが起動しなくなった時は,grubでkernelの起動オプションにselinux=0を追加してselinux一時無効で起動する(see single user mode)。
再起動 # reboot
シャットダウン # shutdown -h now
single user mode rootのパスワードを忘れてしまった時などはシングル・ユーザ・モードでパスワードを新規設定できる.
サービス再起動 # systemctl restart サービス名
サービス確認 # systemctl list-unit-files -t service
サービスON # systemctl enable サービス名
サービスOFF # systemctl diable サービス名
プロセス表示 # ps axc
システム更新 # yum update ;yumとはYellow dog Updater, Modified
yumのDBをクリア
# yum clean all ;yumでエラーが出るとき実行する. それでも直らない時は,
# mv /var/lib/rpm/__db* /tmp/
# rpm --rebuilddb
# mv /var/cache/yum /tmp/ をやってから
# yum clean all
yum-updatesd
一定間隔でyum更新があるかどうかをチェックしてe-mailで通知する。 yumでyum-cronをインストールして,サービスyum-cronをONにする。/etc/yum/yum-cron.confのemail_toにメールアドレスを書く。
yum EPEL 標準外のyumパッケージ see yum EPEL
自動更新 see Linux Tips❐ リンク切れの場合はここ
apacheのversion # httpd -v
メールの配達先 /etc/aliases (newaliasesで設定が反映される。)
ログの解析
logwatchをインストールすると(#yum install logwatch),毎日定時にログ解析メールをroot宛てに送ってくる./etc/aliasesを編集してroot宛てのメールを適宜転送する.
ユーザ追加 # /usr/sbin/useradd -d ホームディレクトリ ユーザ名 ;-d ホームディレクトリは省略可.ホームディレクトリは絶対パスで指定.
ユーザ削除 # /usr/sbin/userdel ユーザ名
ユーザ一覧 # cut -d: -f1 /etc/passwd
ユーザ情報 # finger ユーザ名
loginを不可にする # /usr/sbin/usermod -s /sbin/nologin ユーザ名
パスワード追加 # passwd ユーザ名
パスワード変更 $ passwd
グループ変更 # groupadd グループ名
グループ削除 # groupdel グループ名
グループにユーザ追加 # gpasswd -a ユーザ名 グループ名
グループからユーザ削除 # gpasswd -d ユーザ名 グループ名
グループ表示 $ cat /etc/group
所属グループ表示 $ id
所属グループ変更 $ newgrp グループ名 ;もとのグループに戻るにはexit。
グループの使い方(例) ユーザーfukudaのプライマリグループはstaffだとします。gpasswd -aで fukudaのサブグループにapacheを加えると,例えば,fukudaでログインしてファイルをつくると,その所有者はfukuda,グループは通常通りプライマリグループstaffになります。一方,newgrp apache とやってから,ファイルをつくると,その所有者はfukuda,グループはapacheになります。これで,apache(wwwサーバー) は書き込めるけれども,他の誰でもは書き込めないファイルを作れます。
所有者の一括変更
# chown -R ユーザ名.グループ名 フォルダ ;フォルダ以下の全ファイル/フォルダの所有者を変更..グループ名,あるいは,ユーザ名は省略可.
ネットワーク
IPアドレス・ホスト名の変更 nwtuiコマンドを使ってtui(ターミナルUI)で変更。ホスト名 /etc/hpostname, IPアドレス /etc/sysconfig/network-scripts/ifcfgの直接編集は非推奨。
IP, MACアドレス # /sbin/ifconfig UNIXでは netstat -i,Windows 2000以降では ipconfig /all,Windows 9x/Meでは winipcfg
root login禁止
デフォルトではsshでrootとしてログインできてしまう.これを無効にするには,/etc/ssh/sshd_config の "#PermitRootLogin yes" の下の行にPermitRootLogin noを加え,sshを再起動.
アクセス制限 see tcpwrapper
ファイヤーウオール
# firewall-cmd --permanent --add-service=xxx (サービスxxxを許可)
# firewall-cmd --permanent --remove-service=xxx (サービスxxxを許可しない)
# firewall-cmd --permanent --add-port=nnn/tcp (ポート番号nnnを開ける)
# firewall-cmd --permanent --remove-port=nnn/tcp (ポート番号nnnを閉じる)
# firewall-cmd --reload (設定を反映する)
# firewall-cmd --list-services (確認)
ポート番号 22=ssh, 25=smtp, 80=http, 143=imap, 443=https, 465=smtps, 993=imaps
ポートスキャン $ nmap ipアドレス ;ipアドレスのポートをスキャンする。yumでインストールできる。
リモートログイン $ ssh ユーザ名@ホスト名 ;sshでリモートログイン.ユーザ名@は省略可
ファイル転送 $ sftp ユーザ名@ホスト名 ;sshが使えれば使える.使い方はftpと同じ.
リモートコピー $ scp コピー元 コピー先 ;コピー元/先は ユーザ名@ホスト名:パス, ユーザ名@やホスト名:は省略可
ファイル同期 see rsync
ファイル取得 $ wget http://... ;http://...で指定したファイルを取得.
CUI端末用ブラウザ $ lynx ;学内専用ページを学外から見ることができる.4方向のカーソルキーでネットサーフ.ファイルのダウンロードはd.(インストールは #yum install lynx)
実行
コマンド補間 TABキー
バックグラウンド実行
コマンドを実行後Ctrl+Zで停止しbg。あるいは,コマンドの末尾に&をつけて実行。
プロセスを残す
ログアウト後にもプロセスを残すには, コマンドをバックグラウンド実行,jobsでプロセス番号を調べ(1だったとする),disown %1。プロセスが実行中かどうかはps rxで調べる。
起動時実行
/etc/rc.local ファイルに実行したいコマンドを書いておけば,起動時に実行される。起動後300秒してから実行したい場合は「sleep 300; コマンド」。
定期実行 # crontab -e または $ crontab -e
ファイル
tar作成 $ tar cvf ファイル名 フォルダ名 ;ファイル名の拡張子は.tarとすること
gzファイル圧縮 $ gzip ファイル名 ;拡張子.gzがつく.
gzファイル展開 $ gzip -d aaa.tar.gz ;aaa.tar.gzを解凍.aaa.tarとなる.
tarファイル展開 $ tar -xf aaa.tar ;aaa.tarをフォルダaaaに戻す
zipファイル圧縮 $ zip a.zip ファイル名 ;a.zipが存在する時は追加.
zipフォルダ圧縮 $ zip -r a.zip フォルダ名 ;a.zipが存在する時は追加.
zipファイル展開 $ unzip a.zip ;ワイルドカードで複数ファイルを解凍可能。その際*は\*と書くこと(例 unzip a\*.zip)。
7z圧縮 $ 7za a a.7z ファイル名/フォルダ名 ;7zのインストールはyumにepelリポジトリを追加して,yum install p7zip
7z展開 $ 7za e a.7z
文字コード一括変換
$ find -name "*.html" -print0 | xargs -0 nkf --overwrite -w ;カレントディレクトリ以下のhtmlファイルの文字コードをUTF8に一括変換。|前後の-print0と-0は,出入力ともヌル文字区切りという意味で,空白文字などを含むファイル名にも対応できる。nkfのインストールはyum install nkf
シンボリックリンク $ ln -s リンク先 リンク名
空き領域 $ df ファイル名 ;ファイルの属すファイルシステムの空き・使用容量をKB単位で表示.-mオプションでMB単位.
使用領域 $ du -hs フォルダ名 ;フォルダ内のファイルの総計を表示。
検索 $ find フォルダ -name ファイル名 ;フォルダ以下でファイル名のファイルを探す.
n階層フォルダ作成 $ mkdir -p フォルダ1/フォルダ2/.../フォルダn ;n=1なら-pは不要
インストール
tarからRPM作成 # rpmbuild -ta xxx.tar.gz ;RPMファイルは/usr/src/redhat/RPMS/i386/にできる
RPM表示 # rpm -qa | grep xxx ;xxxはパッケージ名
RPM情報表示 # rpm -qi xxx
RPMインストール # rpm -ivh xxx.rpm
RPMアンインストール # rpm -e xxx
gccインストール # yum install gcc* ;CentOSをデフォルトでインストールするとgccがインストールされない.
php5.3
# yum remove php php-*
# yum install php53 php53-* ;CentOS5.6でphp5.3を使うにはphp5.1をアンインストールせねばならない.CentOS6でははじめからphp5.3, CentOS7ではphp5.4
ruby2.4 see ruby
参考
Fedora Core (http://typea.dip.jp/tips/wiki.cgi?page=Fedora+Core) 2008.4
Linux のセキュリティについて (http://www.st.ryukoku.ac.jp/security/linux/) 2008.4
@IT > Linux Square > Linux Tips Index (http://www.atmarkit.co.jp/flinux/rensai/linuxtips/tipsindex.html) 2006.12
ITmedia エンタープライズ Linux Tips (http://www.itmedia.co.jp/help/tips/linux/) 2006.12