2020年 01月 15日
SUSE Linux でよく使う忘れやすい使えるコマンド
普段よく使うのに、毎日は使わないので、ついつい引数やオプションを間違えてしまうったり、使い方を忘れるコマンド、よく使うケースをまとめてみました。ダメですね。最近物忘れがひどい。本当に「ダメ人間」です。お前、何年やってんだって言われそうです。
プロセスを止めるためによく使います。例えば、Firefox ブラウザが調子悪い時
sle15:~ # firefox &[1] 20876sle15:~ # ps aux | grep firefoxroot 20876 13.5 1.4 2105552 232876 pts/5 Sl 11:39 0:04 /usr/lib64/firefox/firefoxroot 20989 0.0 0.0 7432 828 pts/5 S+ 11:40 0:00 grep --color=auto firefoxsle15:~ # kill 20876sle15:~ # ps aux | grep firefoxroot 21004 0.0 0.0 7432 988 pts/5 S+ 11:41 0:00 grep --color=auto firefoxFirefox がプロセスの一覧から消えました。ただし単純なユーザアプリケーションの場合はこれでもいいのですが、サービスデーモンの場合は、もっと慎重にやるべきです。
結局、「再起動したら治った」ケースも良くあります。
アプリケーションや、サービスの設定ファイルを探すためによく使います。 SUSE Linux の場合、ほとんど YaST ツールで設定するのが無難なのですが、時折、「xxx.conf ってどこ?」という SUSE ならではの場合があります。そんな時に使います。
sle15:~ # find /etc -name hosts <- /etc 以下の hosts というファイル/etc/hostssle15:~ # find /etc -name "host*" <- host...で始まるすべてのファイル、" " で括ります。/etc/host.conf/etc/hostname/etc/hosts/etc/hosts.allow/etc/hosts.deny/etc/hosts.equiv/etc/hosts.lpd/etc/wicked/extensions/hostname/etc/hosts.YaST2savesle15:~ #sle15:~ # find /etc -name "*host*" <-- hostが含まれるすべてのファイル/etc/opt/chrome/native-messaging-hosts/etc/dbus-1/system.d/org.freedesktop.hostname1.conf/etc/host.conf/etc/hostname/etc/hosts/etc/hosts.allow:中略/etc/nginx/vhosts.dsle15:~ #
普段、あまり使わないのですが、ファイルの更新日付や最終アクセス日を確認するために使います。stat へぇーでした。find の方が実用的なケースが多いでしょう。
sle15:~ # touch /home/user/test.txtsle15:~ # ls -al /home/user/test.txt-rw-r--r-- 1 root root 0 Jan 12 12:16 /home/user/test.txtsle15:~ # cat /home/user/test.txt <-- cat してみるsle15:~ # stat /home/user/test.txtFile: /home/user/test.txtSize: 0 Blocks: 0 IO Block: 4096 regular empty fileDevice: 35h/53d Inode: 278 Links: 1Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)Access: 2020-01-12 12:16:53.934678002 +0900 <---cat したのでアクセス時間だけ微妙に違うModify: 2020-01-12 12:16:37.529088236 +0900Change: 2020-01-12 12:16:37.529088236 +0900Birth: -
また、長期間アクセスがないファイルを探すには find コマンドに -atime オプションを使います。例えば 365 日、アクセスが無いファイルを探すには次の様に実行します。
sle15:~ # find /share/SISO/ -atime +365/share/SISO/rhel/rhel-server-5.9-x86_64-dvd.iso/share/SISO/rhel/rhel-server-6.8-x86_64-boot.iso/share/SISO/rhel/rhel-server-6.8-x86_64-dvd.iso/share/SISO/rhel/rhel-server-7.3-x86_64-boot.iso/share/SISO/rhel/rhel-server-7.3-x86_64-dvd.iso:以下略
※ ただし、バックアップジョブなどで、日々アクセスされているとアクセス日も更新されます。ちょっと向いていないかも知れません。ただ、最終更新日を見つけるには -ctime オプションの方がいい様です。
sle15:~ # rcntpd restart <-- サービスをリスタートしてみるsle15:~ # tail /var/log/messages <-- tail のデフォルトは10行表示2020-01-15T10:17:27.156734+09:00 sle15 snmpd[1598]: Connection from UDP: [192.168.1.221]:58800->[192.168.1.240]:1612020-01-15T10:17:42.856286+09:00 sle15 systemd[1]: Stopping NTP Server Daemon...2020-01-15T10:17:42.934525+09:00 sle15 systemd[1]: Stopped NTP Server Daemon.2020-01-15T10:17:42.935309+09:00 sle15 systemd[1]: Starting NTP Server Daemon...2020-01-15T10:17:43.000095+09:00 sle15 ntpd[10995]: ntpd 4.2.8p11@1.3728-o (1): Starting2020-01-15T10:17:43.000354+09:00 sle15 ntpd[10995]: Command line: /usr/sbin/ntpd -p /var/run/ntp/ntpd.pid -g -u ntp:ntp -c /etc/ntp.conf2020-01-15T10:17:43.007380+09:00 sle15 ntpd[10996]: proto: precision = 0.072 usec (-24)2020-01-15T10:17:43.030409+09:00 sle15 ntpd[10996]: switching logging to file /var/log/ntp2020-01-15T10:17:43.037980+09:00 sle15 start-ntpd[10990]: Starting network time protocol daemon (NTPD)2020-01-15T10:17:43.038376+09:00 sle15 systemd[1]: Started NTP Server Daemon.sle15:~ # tail /var/log/messages -n 5 <--- -n [数字] で「数」行分表示2020-01-15T10:17:43.000354+09:00 sle15 ntpd[10995]: Command line: /usr/sbin/ntpd -p /var/run/ntp/ntpd.pid -g -u ntp:ntp -c /etc/ntp.conf2020-01-15T10:17:43.007380+09:00 sle15 ntpd[10996]: proto: precision = 0.072 usec (-24)2020-01-15T10:17:43.030409+09:00 sle15 ntpd[10996]: switching logging to file /var/log/ntp2020-01-15T10:17:43.037980+09:00 sle15 start-ntpd[10990]: Starting network time protocol daemon (NTPD)2020-01-15T10:17:43.038376+09:00 sle15 systemd[1]: Started NTP Server Daemon.sle15:~ #
less は表示画面をカーソルキーでスクロールできるので、便利ですね。意外と知らなかったりします。sle15:~ # less /var/log/messages <---- ファイルを開いたら "G" (shift+g)か ”>” で行末に移動します。終了する時は "q" で抜けます。
応用して、最近発生した error だけ grep して抜き出します。
sle15:~ # tail -n 10000 /var/log/messages | grep fail<-- 10000 行の中から "fail" の文字列を抜き出す。2020-01-13T00:00:02.249817+09:00 sle15 logrotate[9676]: error: stat of /var/log/chrony/*.log failed: Permission denied2020-01-13T00:00:02.292435+09:00 sle15 systemd[1]: logrotate.service: Unit entered failed state.2020-01-13T20:52:32.361748+09:00 sle15 smartd[906]: Device: /dev/sdd [SAT], SMART Prefailure Attribute: 1 Raw_Read_Error_Rate changed from 75 to 762020-01-14T00:00:01.960473+09:00 sle15 logrotate[18671]: error: stat of /var/log/chrony/*.log failed: Permission denied2020-01-14T00:00:02.031651+09:00 sle15 systemd[1]: logrotate.service: Unit entered failed state.2020-01-15T00:00:00.252361+09:00 sle15 logrotate[24918]: error: stat of /var/log/chrony/*.log failed: Permission denied2020-01-15T00:00:00.272513+09:00 sle15 systemd[1]: logrotate.service: Unit entered failed state.
普段 ntpd で、外部のタイムソースと同期している場合、あまり使う事がないかもしれません。で、時刻のズレがある場合に慌ててしまうのですね。
sle15:~ # ntpdate -q ntp.nict.jp<-- 同期状態を -q オプションで確認するserver 133.243.238.163, stratum 1, offset 0.096820, delay 0.16020server 133.243.238.164, stratum 1, offset 0.098111, delay 0.16058server 133.243.238.244, stratum 1, offset -0.000385, delay 0.23285server 133.243.238.243, stratum 1, offset 0.009039, delay 0.2154115 Jan 10:46:29 ntpdate[12177]: adjust time server 133.243.238.163 offset 0.096820 sec<-- ほぼ合っているsle15:~ # dateWed Jan 15 10:46:33 JST 2020sle15:~ # date -s "10:40" <-- 強制的に時刻を変えてみたWed Jan 15 10:40:00 JST 2020sle15:~ # ntpdate -q ntp.nict.jpserver 133.243.238.163, stratum 1, offset 415.140090, delay 0.15050server 133.243.238.164, stratum 1, offset 415.205100, delay 0.14244server 133.243.238.244, stratum 1, offset 415.079092, delay 0.23996server 133.243.238.243, stratum 1, offset 415.208039, delay 0.1628015 Jan 10:40:13 ntpdate[12256]: step time server 133.243.238.164 offset 415.205100 sec<--- 時刻ずれが発生している。sle15:~ # ntpdate ntp.nict.jp15 Jan 10:40:25 ntpdate[12259]: the NTP socket is in use, exiting<-- ntpdでソケットが使われているよsle15:~ # ntpdate -ub ntp.nict.jp15 Jan 10:47:33 ntpdate[12264]: step time server 133.243.238.163 offset 415.208919 sec<-- -u: 非特権モード -b:Step モード(即時同期)で時刻合わせをしてみた
※ 本来はアプリケーションの動作に影響する step モードで変更すべきではありません。Slew モード(徐々に合わせる方法)で修正します。 -B オプションを使います。
【 ntpdate 】コマンド――時刻をNTPサーバと同期する
sle15:~ # dateWed Jan 15 10:47:39 JST 2020sle15:~ # ntpdate -q ntp.nict.jpserver 133.243.238.163, stratum 1, offset -0.019178, delay 0.10196server 133.243.238.164, stratum 1, offset -0.055371, delay 0.17729server 133.243.238.244, stratum 1, offset -0.054022, delay 0.17772server 133.243.238.243, stratum 1, offset 0.011321, delay 0.1458315 Jan 10:47:55 ntpdate[12363]: adjust time server 133.243.238.164 offset -0.055371 sec <-- 大体合っている
何だか動きが妖しいな、という時は、意外とディスクの容量不足が原因だったりします。その場合、犯人捜しにつかえるのが df と du です。
sle15:~ # df -hFilesystem Size Used Avail Use% Mounted on/dev/sda8 50G 30G 20G 60% /udev 3.8G 316K 3.8G 1% /devtmpfs 3.8G 6.4M 3.8G 1% /dev/shm/dev/sda6 164M 24M 140M 15% /boot/efi/dev/sda9 493G 385G 84G 83% /var/dev/sda3 48G 19G 30G 39% /windows/C/dev/sda4 98G 107M 98G 1% /windows/D/dev/sda11 148G 94G 48G 67% /share/dev/sdb2 1.8T 1.7T 4.2G 100% /hdd/sdbsle15:~ # du /home4 /home/user/bin4 /home/user/.fonts4 /home/user/.mozilla68 /home/user72 /home/sle15:~ # du /home -m1 /home/user/bin1 /home/user/.fonts1 /home/user/.mozilla1 /home/user1 /home/sle15:~ #
※ -m を付けると M byte 表記になります。メニュー形式で便利な ncdu も便利です。ぜひインストールして置きたい。
ディスク占有犯は誰!SUSE Linux でディレクトリの占有量を調査 ncduhttps://islandcnt.exblog.jp/239841590/
tar は、お馴染みのコマンドですが、奥が深い。つい使い方をググってしまうのが、tar のコマンドラインオプションです。ここでは、圧縮アーカイブと、アーカイブからあの解凍という「一発芸」の使い方のみ取り上げてみました。
user@sle15:~> tar czf mypics.tar.gz ./pics <--指定したディレクトリをアーカイブuser@sle15:~> ls *.gzmypics.tar.gzuser@sle15:~> mv pics deleteme <-- オリジナルのディレクトリを削除(リネーム)してみたuser@sle15:~> tar xzf mypics.tar.gz <-- 解凍してみるuser@sle15:~> lsbin deleteme mypics.tar.gz pics public_html test test.txt <-- オリジナルのディレクトリを作成し解凍された。user@sle15:~>
※ 通常ではは v オプションを付けて、圧縮、解凍の進捗を表示させて「ヤッテル感」を実感したい人が多いでしょうね。私もそうしています。# tar cvzf myarchive.tar.gz path-to-source でアーカイブ作成# tar xvzf myarchive.tar.gz でアーカイブ抽出します。
以外とよく使うのに、いざ使おうとすると、使い方を忘れるのが ln -s コマンドです。リンク先とシンボリックリンク名を逆にしてハマったりします。# ln -s リンクソース(先) リンクファイル名
user@sle15:~> ls -ltotal 0drwxr-xr-x 1 user users 0 Feb 20 2019 bindrwxr-xr-x 1 user users 2064 Jan 15 12:57 picsdrwxr-xr-x 1 user users 20 Feb 20 2019 public_htmldrwxr-xr-x 1 user users 8 Jan 15 13:40 test-rw-r--r-- 1 root root 0 Jan 12 12:16 test.txtuser@sle15:~> ls ./testpicsuser@sle15:~> ln -s ./test/pics/ mypicuser@sle15:~> ls -ltotal 4drwxr-xr-x 1 user users 0 Feb 20 2019 binlrwxrwxrwx 1 user users 12 Jan 15 13:46 mypic -> ./test/pics/ <--- これdrwxr-xr-x 1 user users 2064 Jan 15 12:57 picsdrwxr-xr-x 1 user users 20 Feb 20 2019 public_htmldrwxr-xr-x 1 user users 8 Jan 15 13:40 test-rw-r--r-- 1 root root 0 Jan 12 12:16 test.txtuser@sle15:~> cd mypicuser@sle15:~/mypic> ls -ltotal 3532-rwxr--r-- 1 user users 47052 Feb 26 2006 06226a.jpg-rwxr--r-- 1 user users 71472 Feb 13 2006 ChryslerProwler10.JPG-rwxr--r-- 1 user users 105900 Feb 11 2006 kin2.jpg-rwxr--r-- 1 user users 44569 Feb 11 2006 kin3.jpg-rwxr--r-- 1 user users 83056 Feb 11 2006 kin.jpguser@sle15:~/mypic>user@sle15:~/mypic> pwd/home/user/mypic <-- 実体ではない、シンボリックリンクがパスになっていますuser@sle15:~/mypic>
毎日、コンソールに向かって Linux をツツイテいるヒトには「何をいまさら感」がある内容ばかりですが、意外とまとめてみると、自分でもあまり意識していない、あるいは「あれ! どうだっけ?」という、コマンドは多いものです。特に
- find- ln -s- ntpdate
などは、よく使いそうで意外と使い方が分かっていない、という自分に気が付きました。いざ、という時の引き出しを用意するためにも、普段慣れしたコマンドの使い方を知っておくべきだと改めて感じました。