SUSE Linux でよく使う忘れやすい使えるコマンド

SUSE Linux でよく使う、忘れやすい使えるコマンド

普段よく使うのに、毎日は使わないので、ついつい引数やオプションを間違えてしまうったり、使い方を忘れるコマンド、よく使うケースをまとめてみました。
ダメですね。最近物忘れがひどい。本当に「ダメ人間」です。お前、何年やってんだって言われそうです。


- ps と kill -

プロセスを止めるためによく使います。例えば、Firefox ブラウザが調子悪い時

sle15:~ # firefox &
[1] 20876
sle15:~ # ps aux | grep firefox
root 20876 13.5 1.4 2105552 232876 pts/5 Sl 11:39 0:04 /usr/lib64/firefox/firefox
root 20989 0.0 0.0 7432 828 pts/5 S+ 11:40 0:00 grep --color=auto firefox
sle15:~ # kill 20876
sle15:~ # ps aux | grep firefox
root 21004 0.0 0.0 7432 988 pts/5 S+ 11:41 0:00 grep --color=auto firefox

Firefox がプロセスの一覧から消えました。

ただし単純なユーザアプリケーションの場合はこれでもいいのですが、サービスデーモンの場合は、もっと慎重にやるべきです。
結局、「再起動したら治った」ケースも良くあります。

- ファイルを探す find -

アプリケーションや、サービスの設定ファイルを探すためによく使います。 SUSE Linux の場合、ほとんど YaST ツールで設定するのが無難なのですが、時折、「xxx.conf ってどこ?」という SUSE ならではの場合があります。そんな時に使います。
sle15:~ # find /etc -name hosts <- /etc 以下の hosts というファイル
/etc/hosts
sle15:~ # 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.YaST2save
sle15:~ #

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.d
sle15:~ #



- ファイルの日付を調べる stat, find -atime -

普段、あまり使わないのですが、ファイルの更新日付や最終アクセス日を確認するために使います。stat へぇーでした。
find の方が実用的なケースが多いでしょう。

sle15:~ # touch /home/user/test.txt

sle15:~ # ls -al /home/user/test.txt
-rw-r--r-- 1 root root 0 Jan 12 12:16 /home/user/test.txt

sle15:~ # cat /home/user/test.txt <-- cat してみる
sle15:~ # stat /home/user/test.txt
File: /home/user/test.txt
Size: 0 Blocks: 0 IO Block: 4096 regular empty file
Device: 35h/53d Inode: 278 Links: 1
Access: (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 +0900
Change: 2020-01-12 12:16:37.529088236 +0900
Birth: -

また、長期間アクセスがないファイルを探すには 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 オプションの方がいい様です。

- ログの最後を確認 tail, less -

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]:161
2020-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): Starting
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.conf
2020-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/ntp
2020-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.conf
2020-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/ntp
2020-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" で抜けます。

SUSE Linux でよく使う忘れやすい使えるコマンド_a0056607_19065358.png

応用して、最近発生した 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 denied
2020-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 76
2020-01-14T00:00:01.960473+09:00 sle15 logrotate[18671]: error: stat of /var/log/chrony/*.log failed: Permission denied
2020-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 denied
2020-01-15T00:00:00.272513+09:00 sle15 systemd[1]: logrotate.service: Unit entered failed state.


- 即時時刻合わせ ntpdate -ub ntp.server -

普段 ntpd で、外部のタイムソースと同期している場合、あまり使う事がないかもしれません。
で、時刻のズレがある場合に慌ててしまうのですね。

sle15:~ # ntpdate -q ntp.nict.jp
      <-- 同期状態を -q オプションで確認する

server 133.243.238.163, stratum 1, offset 0.096820, delay 0.16020
server 133.243.238.164, stratum 1, offset 0.098111, delay 0.16058
server 133.243.238.244, stratum 1, offset -0.000385, delay 0.23285
server 133.243.238.243, stratum 1, offset 0.009039, delay 0.21541
15 Jan 10:46:29 ntpdate[12177]: adjust time server 133.243.238.163 offset 0.096820 sec
<-- ほぼ合っている

sle15:~ # date
Wed Jan 15 10:46:33 JST 2020

sle15:~ # date -s "10:40" <-- 強制的に時刻を変えてみた
Wed Jan 15 10:40:00 JST 2020

sle15:~ # ntpdate -q ntp.nict.jp
server 133.243.238.163, stratum 1, offset 415.140090, delay 0.15050
server 133.243.238.164, stratum 1, offset 415.205100, delay 0.14244
server 133.243.238.244, stratum 1, offset 415.079092, delay 0.23996
server 133.243.238.243, stratum 1, offset 415.208039, delay 0.16280
15 Jan 10:40:13 ntpdate[12256]: step time server 133.243.238.164 offset 415.205100 sec
       <--- 時刻ずれが発生している。

sle15:~ # ntpdate ntp.nict.jp
15 Jan 10:40:25 ntpdate[12259]: the NTP socket is in use, exiting 
      <-- ntpdでソケットが使われているよ


sle15:~ # ntpdate -ub ntp.nict.jp
15 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:~ # date
Wed Jan 15 10:47:39 JST 2020

sle15:~ # ntpdate -q ntp.nict.jp
server 133.243.238.163, stratum 1, offset -0.019178, delay 0.10196
server 133.243.238.164, stratum 1, offset -0.055371, delay 0.17729
server 133.243.238.244, stratum 1, offset -0.054022, delay 0.17772
server 133.243.238.243, stratum 1, offset 0.011321, delay 0.14583
15 Jan 10:47:55 ntpdate[12363]: adjust time server 133.243.238.164 offset -0.055371 sec <-- 大体合っている
 
- ディスクの占有量を調べる df -h と du, ncdu -

何だか動きが妖しいな、という時は、意外とディスクの容量不足が原因だったりします。その場合、犯人捜しにつかえるのが df と du です。

sle15:~ # df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda8 50G 30G 20G 60% /
udev 3.8G 316K 3.8G 1% /dev
tmpfs 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/sdb

sle15:~ # du /home
4 /home/user/bin
4 /home/user/.fonts
4 /home/user/.mozilla
68 /home/user
72 /home/

sle15:~ # du /home -m
1 /home/user/bin
1 /home/user/.fonts
1 /home/user/.mozilla
1 /home/user
1 /home/
sle15:~ #

-m を付けると M byte 表記になります。

メニュー形式で便利な ncdu も便利です。ぜひインストールして置きたい。

SUSE Linux でよく使う忘れやすい使えるコマンド_a0056607_19075830.png

ディスク占有犯は誰!SUSE Linux でディレクトリの占有量を調査 ncdu
https://islandcnt.exblog.jp/239841590/

- tar でのファイルのアーカイブとリストア -

tar は、お馴染みのコマンドですが、奥が深い。つい使い方をググってしまうのが、tar のコマンドラインオプションです。

ここでは、圧縮アーカイブと、アーカイブからあの解凍という「一発芸」の使い方のみ取り上げてみました。

user@sle15:~> tar czf mypics.tar.gz ./pics <--指定したディレクトリをアーカイブ
user@sle15:~> ls *.gz
mypics.tar.gz
user@sle15:~> mv pics deleteme <-- オリジナルのディレクトリを削除(リネーム)してみた
user@sle15:~> tar xzf mypics.tar.gz <-- 解凍してみる
user@sle15:~> ls
bin 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アーカイブ抽出

します。

- シンボリックリンクを作る ls -s -

以外とよく使うのに、いざ使おうとすると、使い方を忘れるのが ln -s コマンドです。リンク先とシンボリックリンク名を逆にしてハマったりします。

# ln -s リンクソース(先) リンクファイル名

user@sle15:~> ls -l
total 0
drwxr-xr-x 1 user users 0 Feb 20 2019 bin
drwxr-xr-x 1 user users 2064 Jan 15 12:57 pics
drwxr-xr-x 1 user users 20 Feb 20 2019 public_html
drwxr-xr-x 1 user users 8 Jan 15 13:40 test
-rw-r--r-- 1 root root 0 Jan 12 12:16 test.txt

user@sle15:~> ls ./test
pics
user@sle15:~> ln -s ./test/pics/ mypic
user@sle15:~> ls -l
total 4
drwxr-xr-x 1 user users 0 Feb 20 2019 bin
lrwxrwxrwx 1 user users 12 Jan 15 13:46 mypic -> ./test/pics/ <--- これ
drwxr-xr-x 1 user users 2064 Jan 15 12:57 pics
drwxr-xr-x 1 user users 20 Feb 20 2019 public_html
drwxr-xr-x 1 user users 8 Jan 15 13:40 test
-rw-r--r-- 1 root root 0 Jan 12 12:16 test.txt
user@sle15:~> cd mypic
user@sle15:~/mypic> ls -l
total 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.jpg
user@sle15:~/mypic>
user@sle15:~/mypic> pwd
/home/user/mypic <-- 実体ではない、シンボリックリンクがパスになっています
user@sle15:~/mypic>

- まとめ -

毎日、コンソールに向かって Linux をツツイテいるヒトには「何をいまさら感」がある内容ばかりですが、意外とまとめてみると、自分でもあまり意識していない、あるいは「あれ! どうだっけ?」という、コマンドは多いものです。特に

- find
- ln -s
- ntpdate

などは、よく使いそうで意外と使い方が分かっていない、という自分に気が付きました。
いざ、という時の引き出しを用意するためにも、普段慣れしたコマンドの使い方を知っておくべきだと改めて感じました。










by islandcenter | 2020-01-15 19:41 | SUSE | Comments(0)