www.shoeisha.co.jp
- 基本的なファイル管理
- ファイルの圧縮・解凍
- 圧縮ファイルの閲覧
- アーカイブの作成・展開
- tar
- 主なオプション
- -f, --file=ARCHIVE
- -c, --create
- -t, --list
- -x, --extract, --get
- -z
- -j
- -J
- -v, --verbose
- --delete
- -r, --append
- -u, --update
- -N, --newer=DATE-OR-FILE, --after-date=DATE-OR-FILE
- -M, --multi-volume
- cpio
- dd
- パーミッションの設定
- ファイルの所有者管理
- ハードリンクとシンボリックリンク
- プロセス管理
- プロセスの実行優先度(priority)
基本的なファイル管理
ファイルの圧縮・解凍
|
gzip |
bzip2 |
xz |
圧縮コマンド |
gzip |
bzip2 |
xz |
圧縮率 |
低い |
中 |
高い |
時間 |
短い |
中 |
長い |
ls -l $(which {gunzip,bunzip2,unxz})
-rwxr-xr-x 1 root root 34888 1月 30 2017 /bin/bunzip2
-rwxr-xr-x 1 root root 2301 4月 28 2017 /bin/gunzip
lrwxrwxrwx 1 root root 2 2月 24 02:09 /usr/bin/unxz -> xz
オプション
-d
, --decompress
-c
, --stdout
-r
, --recursive
-k
, --keep
ls hogedir
fuga hoge piyo
gzip hogedir
gzip: hogedir is a directory -- ignored
gzip -r hogedir
ls hogedir
fuga.gz hoge.gz piyo.gz
gzip -dr hogedir
gzip -c hogedir/hoge > hogedir/hoge.gz
ls hogedir
fuga hoge hoge.gz piyo
bzip2
-d
, --decompress
-c
, --stdout
-k
, --keep
--recursive
的なものはない
bzip2 piyo
ls
bunzip2 piyo
fuga hoge hogedir piyo.bz2
xz
-d
, --decompress
-c
, --stdout
-k
, --keep
圧縮ファイルの閲覧
zcat
, bzcat
, xzcat
- それぞれ
gzip
, bzip2
, xz
で圧縮されたファイルを伸張・cat
するやつ
tar
- デフォルトで圧縮しない
- オプションで圧縮可能
-
省略可能
主なオプション
-f
, --file=ARCHIVE
- アーカイブファイル名指定
- 指定なき場合、標準入出力
-c
, --create
tar c hogedir
tar: 端末にアーカイブの内容を書き出すのを拒否 (-f オプションの指定忘れ?)
tar: Error is not recoverable: exiting now
tar cf hogedir.tar hogedir
ls
fuga hoge hogedir hogedir.tar piyo
-t
, --list
tar ft hogedir.tar
fuga hoge hogedir hogedir.tar piyo
tar xf hogedir.tar
-z
-j
-J
tar cz hogedir > hogedir.tar.gz
tar xz hogedir < hogedir.tar.gz
tar cjf hogedir.tar.bz2 hogedir
tar xjf hogedir.tar.bz2 hogedir
tar cJ --file=hogedir.tar.xz hogedir
tar xJ --file=hogedir.tar.xz hogedir
-v
, --verbose
tar cvf hogedir.tar hogedir
hogedir/
hogedir/hoge
hogedir/piyo
hogedir/fuga
--delete
tar --delete --file=hogedir.tar hogedir/piyo
tar t < hogedir.tar
hogedir/
hogedir/hoge
hogedir/fuga
-r
, --append
touch puni
tar r puni --file hogedir.tar
tar tf hogedir.tar
hogedir/
hogedir/hoge
hogedir/piyo
hogedir/fuga
puni
-u
, --update
- アーカイブ内にある同名のファイルより新しいものだけ追加
-N
, --newer=DATE-OR-FILE
, --after-date=DATE-OR-FILE
-M
, --multi-volume
cpio
ls | cpio -o > /tmp/backup
dd
dd --help
Copy a file, converting and formatting according to the operands.
- ハードディスクやCD-ROMなどのデバイスの内容をそのまま取り扱える
- MBRのブートストラップローダを初期化する例
dd if=/dev/zero of=/dev/sda bs=446 count=1
if=FILE read from FILE instead of stdin
of=FILE write to FILE instead of stdout
bs=BYTES read and write up to BYTES bytes at a time (default: 512);
overrides ibs and obs
count=N copy only N input blocks
所有者
- ファイルやディレクトリを生成すると、下記が所有者として設定される
ls -ld .
- wandユーザーはdockerグループに所属している
- dockerを一般ユーザーで動かすため
- 【追記】サブグループにすべきだった
drwxr-xr-x 3 wand docker 4096 2月 26 22:54 .
アクセス権
drwxr-xr-x
- アクセス権
r
: 読み取り権,4
w
: 書き込み権,2
x
: 実行権,1
d
はファイル種別(directory)
- 数値表記だと755
- 所有者が7(rwx)
- グループが5(r-x)
- その他ユーザーが5(r-x)
アクセス権の変更
主なオプション
オプション
対象
操作
許可の種別
例
chmod go+w .
ls -ld .
drwxrwxrwx 3 wand docker 4096 2月 26 22:54 .
chmod go=w .
ls -ld .
drwx-w--w- 3 wand docker 4096 2月 26 22:54 .
chmod 755 .
ls -ld .
drwxr-xr-x 3 wand docker 4096 2月 26 22:54 .
SUID, SGID
- ファイルの所有者、もしくは所有グループの実行権が
S
, s
のやつ
- 実行権を持っているユーザーによってプログラムが実行された場合、
ファイルの所有者もしくは所有グループの権限で実行
例: passwd, /etc/passwd
passwd
... パスワードを変更できるコマンド
/etc/passwd
... パスワードの変更が保存されるファイル
- 所有権: rootのみが書き込み可能
-rw-r--r-- 1 root root 2372 2月 24 20:04 /etc/passwd
- 一般ユーザーは
passwd
コマンドでパスワードを変更し、/etc/passwd
を書き換えることができる。なぜか?
- SUID
ls -l $(which passwd)
-rwsr-xr-x 1 root root 59640 1月 26 2018 /usr/bin/passwd
ls -ld
drwxr-sr-x 2 wand docker 4096 2月 27 07:11 .
sudo touch hoge
ls -l
-rw-r--r-- 1 root docker 0 2月 27 07:13 hoge
スティッキービット
- ディレクトリのその他ユーザーの実行権が
T
, t
のやつ
- 書き込み権限があっても、自分以外のユーザー所有のファイルを削除できない
ls -ld /tmp
drwxrwxrwt 17 root root 4096 2月 27 07:09 /tmp
root:root
所有なので、一般ユーザーは全員「その他ユーザー」
- 「その他ユーザー」間で、他人のファイルを削除することはできない
- 数値表現は
4777
デフォルトのアクセス権
umask
コマンド
- 「マスク」
- ファイル: (umask & 666) ^ 666
- ディレクトリ: umask ^ 777
umask
touch hoge
ls -l
0022
-rw-r--r-- 1 wand docker 0 2月 27 07:22 hoge
umask 0000
umask
touch piyo
ls -l
0000
-rw-r--r-- 1 wand docker 0 2月 27 07:22 hoge
-rw-rw-rw- 1 wand docker 0 2月 27 07:22 piyo
umask 0022
umask
ファイルの所有者管理
所有者の変更
chown
-R
, --recursive
: 再帰的に
- root特権
sudo chown root piyo
sudo chown root:root hoge
ls -l
-rw-r--r-- 1 root root 0 2月 27 07:22 hoge
-rw-rw-rw- 1 root docker 0 2月 27 07:22 piyo
グループの変更
chgrp
-R
, --recursive
: 再帰的に
- 一般ユーザーでも可能
touch fuga
ls -l fuga
sudo chgrp wand fuga
ls -l fuga
-rw-r--r-- 1 wand docker 0 2月 27 07:29 fuga
-rw-r--r-- 1 wand wand 0 2月 27 07:29 fuga
ハードリンク
- iノード
- ファイルやディレクトリと1対1で紐づく情報
- ファイル種別
- ファイルサイズ
- アクセス権
- 所有者
- リンク
- ディスク上の物理的な保存場所(ブロック番号)
- iノード番号
- ファイルやディレクトリに紐づくiノードの番号
- 1対1
ls -i
12849099 fuga 12849092 hoge 12849098 piyo
- ハードリンク
- 同じファイルの実体を参照するリンク
- ファイルの実体が同じなのでiノード番号も同じ
ln fuga fuga2
ls -F
ls -l
ls -i
fuga fuga2 hoge piyo
-rw-r--r-- 2 wand wand 0 2月 27 07:29 fuga
-rw-r--r-- 2 wand wand 0 2月 27 07:29 fuga2
-rw-r--r-- 1 root root 0 2月 27 07:22 hoge
-rw-rw-rw- 1 root root 0 2月 27 07:22 piyo
-i
でiノード番号を表示して初めてハードリンクを認識できる
12849099 fuga 12849099 fuga2 12849092 hoge 12849098 piyo
rm fuga
ls
fuga2 hoge piyo
制限
- ファイルシステムをまたぐハードリンクは作れない
- ディレクトリのハードリンクは作れない
- 昔はできたが、禁止したらしい
- ディレクトリの無限ループ
- unlinkが禁止されたためリンクを削除するすべがなくなった
ln -s fuga2 fuga3
ls -F
ls -l
ls -i
fuga2 fuga3@ hoge piyo
-rw-r--r-- 1 wand wand 0 2月 27 07:29 fuga2
lrwxrwxrwx 1 wand docker 5 2月 27 07:56 fuga3 -> fuga2
-rw-r--r-- 1 root root 0 2月 27 07:22 hoge
-rw-rw-rw- 1 root root 0 2月 27 07:22 piyo
12849099 fuga2 12849103 fuga3 12849092 hoge 12849098 piyo
リンクの作成
LN(1) User Commands LN(1)
NAME
ln - make links between files
SYNOPSIS
ln [OPTION]... [-T] TARGET LINK_NAME (1st form)
ln [OPTION]... TARGET (2nd form)
ln [OPTION]... TARGET... DIRECTORY (3rd form)
ln [OPTION]... -t DIRECTORY TARGET... (4th form)
リンクのコピー
cp -d
--no-dereference --preserve=links
と同
ls -la
-rw-r--r-- 1 wand wand 0 2月 27 07:29 fuga2
lrwxrwxrwx 1 wand docker 5 2月 27 07:56 fuga3 -> fuga2
cp fuga3 fuga4
cp -d fuga3 fuga5
ls -la
-rw-r--r-- 1 wand wand 0 2月 27 07:29 fuga2
lrwxrwxrwx 1 wand docker 5 2月 27 07:56 fuga3 -> fuga2
-rw-r--r-- 1 wand docker 0 2月 27 08:00 fuga4
lrwxrwxrwx 1 wand docker 5 2月 27 08:00 fuga5 -> fuga2
プロセス管理
プロセスの監視
- プロセス
- OSが動作中のプログラムを管理する基本単位
- ハードディスクからメモリ上に読み出され、実行されているプログラム
ps
: 現在実行されているプロセスを表示
ps
- psコマンドを実行したユーザ自身が起動しているプロセスを表示
PID TTY TIME CMD
3631 pts/1 00:00:00 bash
8024 pts/1 00:00:00 ps
ps
a
ps a | head -6
PID TTY STAT TIME COMMAND
1358 tty1 Ssl+ 0:00 /usr/lib/gdm3/gdm-wayland-session gnome-session -
1362 tty1 Sl+ 0:00 /usr/lib/gnome-session/gnome-session-binary --aut
1380 tty1 Sl+ 0:26 /usr/bin/gnome-shell
1477 tty1 Sl+ 0:00 /usr/bin/Xwayland :1024 -rootless -terminate -acc
1530 tty1 Sl 0:00 ibus-daemon --xim --panel disable
f
ps f | head -10
PID TTY STAT TIME COMMAND
3126 pts/0 Ss+ 0:00 bash
1963 tty2 Ssl+ 0:00 /usr/lib/gdm3/gdm-x-session --run-script env GNOM
1967 tty2 Sl+ 3:47 \_ /usr/lib/xorg/Xorg vt2 -displayfd 3 -auth /ru
2013 tty2 Sl+ 0:00 \_ /usr/lib/gnome-session/gnome-session-binary -
2230 tty2 Sl+ 5:54 \_ /usr/bin/gnome-shell
2646 tty2 Sl 1:39 | \_ ibus-daemon --xim --panel disable
2656 tty2 Sl 0:00 | | \_ /usr/lib/ibus/ibus-dconf
2987 tty2 Sl 0:31 | | \_ /usr/lib/ibus-mozc/ibus-engine-mo
2994 tty2 SLl 0:11 | | \_ /usr/lib/mozc/mozc_server
u
ps u
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
...
gdm 1358 0.0 0.0 191808 5612 tty1 Ssl+ 2月25 0:00 /usr/lib/
gdm 1362 0.0 0.1 626988 14128 tty1 Sl+ 2月25 0:00 /usr/lib/
gdm 1651 0.0 0.0 199032 6496 tty1 Sl 2月25 0:00 /usr/lib/
wand 1963 0.0 0.0 206140 6060 tty2 Ssl+ 2月25 0:00 /usr/lib/
wand 1967 0.1 0.9 539368 77836 tty2 Rl+ 2月25 3:47 /usr/lib/
wand 2013 0.0 0.1 554344 15380 tty2 Sl+ 2月25 0:00 /usr/lib/
...
x
ps x | head -10
PID TTY STAT TIME COMMAND
1879 ? Ss 0:00 /lib/systemd/systemd --user
1880 ? S 0:00 (sd-pam)
1893 ? Sl 0:00 /usr/bin/gnome-keyring-daemon --daemonize --login
1963 tty2 Ssl+ 0:00 /usr/lib/gdm3/gdm-x-session --run-script env GNOM
1967 tty2 Sl+ 3:49 /usr/lib/xorg/Xorg vt2 -displayfd 3 -auth /run/us
2007 ? Ss 0:01 /usr/bin/dbus-daemon --session --address=systemd:
2013 tty2 Sl+ 0:00 /usr/lib/gnome-session/gnome-session-binary --ses
2146 ? Ss 0:00 /usr/bin/ssh-agent /usr/bin/im-launch env GNOME_S
2172 ? Ssl 0:00 /usr/lib/at-spi2-core/at-spi-bus-launcher
-e
-l
ps -l
F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD
0 S 1000 3631 3181 0 80 0 - 5945 wait pts/1 00:00:00 bash
4 R 1000 8129 3631 0 80 0 - 7483 - pts/1 00:00:00 ps
-p PID
ps -p 1 3631
PID TTY STAT TIME COMMAND
1 ? Ss 0:07 /sbin/init splash
3631 pts/1 Ss 0:00 /bin/bash --noediting -i
-C NAME
ps -C bash
PID TTY TIME CMD
3126 pts/0 00:00:00 bash
3631 pts/1 00:00:00 bash
-w
top
top
top - 08:23:44 up 1 day, 8:57, 1 user, load average: 0.19, 0.23, 0.23
Tasks: 246 total, 1 running, 198 sleeping, 0 stopped, 0 zombie
%Cpu(s): 4.3 us, 1.0 sy, 0.0 ni, 94.7 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : 8061240 total, 4321064 free, 1807604 used, 1932572 buff/cache
KiB Swap: 2097148 total, 2097148 free, 0 used. 5651284 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
8188 wand 20 0 42952 3772 3180 R 12.5 0.0 0:00.02 top
2230 wand 20 0 3577708 179260 78132 S 6.2 2.2 6:15.26 gnome-shell
3181 wand 20 0 524208 139936 63096 S 6.2 1.7 9:08.87 emacs25
1 root 20 0 225460 9280 6788 S 0.0 0.1 0:07.85 systemd
2 root 20 0 0 0 0 S 0.0 0.0 0:00.01 kthreadd
4 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 kworker/0:0H
pstree
pstree
systemd─┬─ModemManager───2*[{ModemManager}]
├─NetworkManager─┬─dhclient
│ └─2*[{NetworkManager}]
├─accounts-daemon───2*[{accounts-daemon}]
├─acpid
├─avahi-daemon───avahi-daemon
├─bluetoothd
├─boltd───2*[{boltd}]
プロセスの終了
kill
KILL(1) User Commands KILL(1)
NAME
kill - send a signal to a process
SYNOPSIS
kill [options] <pid> [...]
DESCRIPTION
The default signal for kill is TERM. Use -l or -L to list
available signals. Particularly useful signals include HUP,
INT, KILL, STOP, CONT, and 0. Alternate signals may be speci‐
fied in three ways: -9, -SIGKILL or -KILL. Negative PID values
may be used to choose whole process groups; see the PGID column
in ps command output. A PID of -1 is special; it indicates all
processes except the kill process itself and init.
OPTIONS
<pid> [...]
Send signal to every <pid> listed.
-<signal>
-s <signal>
--signal <signal>
Specify the signal to be sent. The signal can be speci‐
fied by using name or number. The behavior of signals is
explained in signal(7) manual page.
1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL 5) SIGTRAP
6) SIGABRT 7) SIGBUS 8) SIGFPE 9) SIGKILL 10) SIGUSR1
11) SIGSEGV 12) SIGUSR2 13) SIGPIPE 14) SIGALRM 15) SIGTERM
16) SIGSTKFLT 17) SIGCHLD 18) SIGCONT 19) SIGSTOP 20) SIGTSTP
21) SIGTTIN 22) SIGTTOU 23) SIGURG 24) SIGXCPU 25) SIGXFSZ
26) SIGVTALRM 27) SIGPROF 28) SIGWINCH 29) SIGIO 30) SIGPWR
31) SIGSYS 34) SIGRTMIN 35) SIGRTMIN+1 36) SIGRTMIN+2 37) SIGRTMIN+3
38) SIGRTMIN+4 39) SIGRTMIN+5 40) SIGRTMIN+6 41) SIGRTMIN+7 42) SIGRTMIN+8
43) SIGRTMIN+9 44) SIGRTMIN+10 45) SIGRTMIN+11 46) SIGRTMIN+12 47) SIGRTMIN+13
48) SIGRTMIN+14 49) SIGRTMIN+15 50) SIGRTMAX-14 51) SIGRTMAX-13 52) SIGRTMAX-12
53) SIGRTMAX-11 54) SIGRTMAX-10 55) SIGRTMAX-9 56) SIGRTMAX-8 57) SIGRTMAX-7
58) SIGRTMAX-6 59) SIGRTMAX-5 60) SIGRTMAX-4 61) SIGRTMAX-3 62) SIGRTMAX-2
63) SIGRTMAX-1 64) SIGRTMAX
シグナルID |
シグナル名 |
動作 |
1 |
HUP |
ハングアップ |
2 |
INT |
割り込み(Ctrl + C) |
9 |
KILL |
強制終了 |
15 |
TERM |
終了(デフォルト) |
18 |
CONT |
停止しているプロセスを再開 |
19 |
STOP |
一時停止 |
kill 893
kill -15 893
kill -s 15 893
kill -TERM 893
kill -SIGTERM 893
- SIGKILLはいきなり使わない
- プログラムが異常動作を起こした場合などに
- システムに何らかの障害が発生する可能性がある
- 親プロセスにSIGKILLを送ると、子孫も強制終了
pgrep
コマンド
bash &
[1] 4599
pgrep bash -u $(whoami)
4599
13968
killall
killall bash
pgrep bash | xargs kill
pkill
-u
, -g
でプロセスの実行ユーザー・実行グループ指定できる
killall
でも指定できるっぽい
pkill -u $(whoami) -SIGKILL bash
ジョブ管理
- ジョブ
- ユーザーがコマンドやプログラムをシェル上で実行するひとまとまりの処理単位
- パイプでつないだものは全体で1ジョブ
バックグラウンドジョブの実行
- いままでさんざんやってきたのはフォアグラウンド
- 時間がかかるジョブをフォアグラウンドで実行すると、終了するまでシェルに制御が返ってこない
- そこでバックグラウンド
sudo updatedb &
[2] 14512
[1] 終了 1
jobs
[2]+ 停止 sudo updatedb
nohup
コマンド
NOHUP(1) User Commands NOHUP(1)
NAME
nohup - run a command immune to hangups, with output to a non-
tty
- no hungupの意味か
- ログアウト後も処理続行
sudo nohup updatedb &
フォアグラウンドとバックグラウンド
journalctl -f
-- Logs begin at Tue 2019-01-01 00:00:00 JST. --
4月 19 17:58:23 wand-ThinkPad-X240s systemd[1949]: This usually indicates unclean termination of a previous run, or service implementation deficiencies.
4月 19 17:58:23 wand-ThinkPad-X240s systemd[1949]: Starting GNOME Terminal Server...
4月 19 17:58:23 wand-ThinkPad-X240s dbus-daemon[1993]: [session uid=1000 pid=1993] Successfully activated service 'org.gnome.Terminal'
4月 19 17:58:23 wand-ThinkPad-X240s systemd[1949]: Started GNOME Terminal Server.
4月 19 17:58:38 wand-ThinkPad-X240s sudo[19211]: wand : TTY=pts/0 ; PWD=/home/wand ; USER=root ; COMMAND=/usr/bin/tail -f /var/log/messages
4月 19 17:58:38 wand-ThinkPad-X240s sudo[19211]: pam_unix(sudo:session): session opened for user root by (uid=0)
4月 19 17:58:38 wand-ThinkPad-X240s sudo[19211]: pam_unix(sudo:session): session closed for user root
4月 19 18:01:40 wand-ThinkPad-X240s wand[19252]: Test logger test message
4月 19 18:02:11 wand-ThinkPad-X240s org.gnome.Shell.desktop[2139]: [Child 18822, MediaPlayback #1] WARNING: Decoder=7feb2fff3000 Decode error: NS_ERROR_DOM_MEDIA_FATAL_ERR (0x806e0005) - RefPtr<mozilla::MozPromise<RefPtr<mozilla::MediaTrackDemuxer::SamplesHolder>, mozilla::MediaResult, true> > mozilla::MediaSourceTrackDemuxer::DoGetSamples(int32_t): manager is detached.: file /build/firefox-QFhmDU/firefox-66.0.2+build1/dom/media/MediaDecoderStateMachine.cpp, line 3331
4月 19 18:02:11 wand-ThinkPad-X240s org.gnome.Shell.desktop[2139]: [Child 18822, MediaPlayback #2] WARNING: Decoder=7feb2fff3000 Decode error: NS_ERROR_DOM_MEDIA_FATAL_ERR (0x806e0005) - RefPtr<mozilla::MozPromise<RefPtr<mozilla::MediaTrackDemuxer::SamplesHolder>, mozilla::MediaResult, true> > mozilla::MediaSourceTrackDemuxer::DoGetSamples(int32_t): manager is detached.: file /build/firefox-QFhmDU/firefox-66.0.2+build1/dom/media/MediaDecoderStateMachine.cpp, line 3331
4月 19 18:02:55 wand-ThinkPad-X240s sudo[19296]: wand : TTY=pts/1 ; PWD=/home/wand ; USER=root ; COMMAND=/bin/bash
(Ctrl + Zでサスペンド)
^Z
[1]+ 停止 journalctl -f
jobs
[1]+ 停止 journalctl -f
bg 1
[1]+ 実行中 journalctl -f &
- 他の端末で
sudo
とかすると、元の端末でログが書き出される
wand : TTY=pts/1 ; PWD=/home/wand ; USER=root ; COMMAND=/bin/bash
4月 19 18:04:56 wand-ThinkPad-X240s sudo[19334]: pam_unix(sudo:session): session opened for user root by (uid=0)
4月 19 18:04:57 wand-ThinkPad-X240s sudo[19334]: pam_unix(sudo:session): session closed for user root
- が、バックグラウンド実行なので、シェルに制御は戻ってくる
echo hoge
hoge
fg
コマンド
- バックグラウンドで動いているジョブをフォアグラウンドで動かす
fg 1
システムの状況把握
free
コマンド
FREE(1) User Commands FREE(1)
NAME
free - Display amount of free and used memory in the system
/proc/meminfo
由来の情報を表示
- 主要なオプション
-m
, --mebi
-s delay
, --seconds delay
free -m
total used free shared buff/cache available
Mem: 7872 1666 1292 210 4913 5685
Swap: 2047 507 1540
uptime
コマンド
UPTIME(1) User Commands UPTIME(1)
NAME
uptime - Tell how long the system has been running.
- システムの稼働時間やロードアベレージ情報等を表示
- ロードアベレージ
- CPUに処理してもらうのを待っているプロセスの数
- CPU数 x CPUあたりのコア数を恒常的に超えているかどうかが一種の目安らしい
uname
UNAME(1) User Commands UNAME(1)
NAME
uname - print system information
uname
Linux
uname -a
Linux wand-ThinkPad-X240s 4.15.0-47-generic #50-Ubuntu SMP Wed Mar 13 10:44:52 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux
WATCH(1) User Commands WATCH(1)
NAME
watch - execute a program periodically, showing output
fullscreen
SYNOPSIS
watch [options] command
- コマンドを一定時間ごとに実行
- デフォルト2秒
- 端末をスクロールさせずに固定で表示
- 主なオプション
-n seconds
, --interval seconds
-d
, --deferences
-t
, --no-title
- カレントディレクトリのファイルを毎秒監視する例
watch -n 1 -d ls
Every 1.0s: ls wand-ThinkPad-X240s: Fri Apr 19 18:28:15 2019
hoge
piyo
端末の活用 -- tmux
- ターミナルマルチプレクサ
- 一つの端末画面の中に複数の仮想端末を作成し、切り替えるやつ
- デタッチ/アタッチ機能
- 各ウィンドウの作業状況を保ったまま終了
- 次回接続時に再開
- 有名所
ウィンドウ操作
- プレフィックスキー
- 主要な操作
プレフィックスキー c
プレフィックスキー &
プレフィックスキー <数字>
プレフィックスキー n|p
プレフィックスキー w
セッション操作
[detached (from session 0)]
tmux ls
0: 1 windows (created Fri Apr 19 10:55:54 2019) [70x23]
0: 3 windows (created Fri Apr 19 10:55:54 2019) [70x23]
1: 1 windows (created Fri Apr 19 10:59:13 2019) [70x23]
tmux attach
tmux attach -t 1
tmux new-session
tmux kill-session
tmux kill-session -t 1
tmux kill-server
プロセスの実行優先度(priority)
- CPU時間を多く割り当てる
- ナイス値(niceness)
- 小さいほど優先順位高い
- 値域
[-20,+20)
の整数
コマンド実行時の優先度指定
-n, --adjustment=N
add integer N to the niceness (default 10)
nice -n -10 updatedb
- マイナス値設定=優先度を上げる場合、root権限必要
nice: 優先度を設定できません: 許可がありません
updatedb: `/var/lib/mlocate/mlocate.db' 用の一時ファイルを開けません
実行中プロセスの優先度変更
RENICE(1) User Commands RENICE(1)
NAME
renice - alter priority of running processes
SYNOPSIS
renice [-n] priority [-g|-p|-u] identifier...
- PID1200を実行優先度10(niceness-10)に再設定する例
renice -10 -p 1200
head
コマンド等のように数値の前に-
を付けたりはしないので注意