// OSを確認
$ cat /etc/os-release
// CPUを確認
$ cat /proc/cpuinfo
// メモリを確認
$ cat /proc/meminfo
メモリはfree
コマンドでも確認可能。
$ free -mh
total used free shared buff/cache available
Mem: 967Mi 199Mi 233Mi 0.0Ki 534Mi 614Mi
Swap: 0B 0B 0B
cd
など)からアプリケーション(Apache
など)にいたるまでプロセスの単位で実行
fork
すると呼ぶfork
したプロセスの中身を入れ替えるこexec
すると呼ぶ init
またはsystemd
)になるfork
するfork
して作成した子プロセスの中身をls
コマンドにexec
する$ ps auxf | less
or
$ ps aux --sort -pid
# ....
root 1 0.0 0.5 125524 5488 ? Ss 3月26 0:03 /usr/lib/systemd/systemd --switched-root --system --deserialize 21 # <--- pid 1はsystemd
root 1668 0.0 2.6 66124 26532 ? Ss 3月26 0:03 /usr/lib/systemd/systemd-journald
root 1693 0.0 0.2 118808 2164 ? Ss 3月26 0:00 /usr/sbin/lvmetad -f
# ...
プロセスがカーネルに操作を依頼する処理。(Linuxブートキャンプ p50)
シェルが管理している、「シェルを実行する作業単位」のことです。
https://teratail.com/questions/27174
「シグナル」はプロセスとプロセスの間で通信を行う際に使用される“信号”のことで、シグナルを受け取ったプロセスは“何らかの動作”を行います。
https://www.atmarkit.co.jp/ait/articles/1708/04/news015.html
[CTRL]+[C]は「SIGINT」というシグナルを行うキー操作、[CTRL]+[Z]は「SIGTSTP」というシグナルを行うキー操作です。
https://www.atmarkit.co.jp/ait/articles/1708/04/news015.html
プロセスによる面もあるが、通常CTRL + CのSIGINTは「プロセスの終了とコアダンプ出力」、CTRL + Zはプロセスの一時停止。
ジョブにはフォアグラウンドジョブ/バックグラウンドジョブの2種類がある。
# フォアグランドのジョブを一時停止(Ctrl + z)してバックグランド実行
# 新たにフォアグランドでジョブを実行
$ sleep 100
// フォアグランドで実行されているので入力をsleep 100のジョブが終了するまで受け付けない
^Z // Ctrl + zで一時停止
[1]+ Stopped sleep 100
$ bg 1 // バックグランドジョブに変更
[1]+ sleep 100 &
$ jobs
[1]+ Running sleep 100 &
$ sleep 50
// フォアグランドで実行されているので入力をsleep 50のジョブが終了するまで受け付けない
コマンドの最後に&
付与
rel. http://www.code-magagine.com/?p=3372
$ sleep 60 &
[1] 1275
$ sleep 80 &
[2] 1316
$ jobs
[1]- Running sleep 60 & // [1]はjobid
[2]+ Running sleep 80 &
$ fg 1
sleep 60 // sleep 60をフォアグランドで実行 Ctrl + CでSIGINTを送信できるので停止できる
ジョブが実行中でも、次のコマンドを実行することができます。
標準入出力を扱う端末を制御端末とよびます。
制御端末の総称をtty
(TeleTypeWriterの略)と記載します。
以下に記載するように実端末をtty
、仮想端末をpts
と分けることもあります。
tty:TeleTypeWriter
):agettyなどLinux自身が使用する場合に割り当てられますpts:pseudo-terminal
):SSHごしにログインした場合は仮想端末が割り当てられますSSHログインした際の制御端末はtty
コマンドで確認します。
$ tty
/dev/pts/0
ps
やw
のTTY
列では略してpts/0
と表示されます0
はログインしているユーザーによって異なります2ユーザーがSSHログインしている場合の例。
$ w
01:14:24 up 140 days, 19:45, 2 users, load average: 0.00, 0.00, 0.00
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
ubuntu pts/0 124.18.121.200 00:27 0.00s 0.08s 0.00s w
ubuntu pts/1 124.18.121.200 01:14 4.00s 0.03s 0.03s -bash
(pts/0
が割り当てられた)SSHログインユーザーにpts/0
が割り当てられて、grep
が実行されたことがわかります。
$ ps auxf | grep sshd
root 26608 0.0 0.3 72300 1788 ? Ss Jun04 0:08 /usr/sbin/sshd -D
root 31742 0.0 1.4 107984 7152 ? Ss 00:27 0:00 \_ sshd: ubuntu [priv]
ubuntu 31851 0.0 0.7 107984 3516 ? S 00:27 0:00 \_ sshd: ubuntu@pts/0
ubuntu 452 0.0 0.2 14856 1112 pts/0 S+ 01:08 0:00 \_ grep --color=auto sshd
デーモンの特徴。(Linux ブートキャンプ)
ps aux
のTTY
が?
)ps ajx
で確認可能)新Linux/Unix 入門(p125)
以下の表は「新Linux/Unix 入門」(p125)から引用
機能 | 説明 |
---|---|
r | 読み出し許可 -> ファイル読み込み可能 |
w | 書き込み許可 -> ファイル書き込み可能 |
x | 実行許可 -> ファイル実行可能 |
機能 | 説明 |
---|---|
r | ディレクトリリストを表示できる(具体的にはlsできる) 読み込み許可というより「表示許可」と考えると良い(rだけではdはできない) |
w | ディレクトリ内のファイルを削除したりサブディレクトリを作成できる また新規ファイルの作成などができる 書き込み許可というより「作成削除許可」と考えると良い |
x | cdコマンドでディレクトリに移動できる。また内部をサーチできる これが不許可のときは、そのディレクトリ以下を見ることができない 実行許可というより「検索許可」と考えると良い。 |
ファイルのパーミッションは理解しやすいですがディレクトリのパーミッションは誤解しやすい点があるのでいくつか例を記載します。
sample
|-- sub 100
sub
が100
なので、sample
で$ ls su2
を実行できません。
$ ls sub
ls: sub: Permission denied
説明を単純にするため所有者以外の権限は全て不許可へ設定します。
$ mkdir mydir
$ chmod 700 mydir
$ ls -al | grep mydir
drwx------ 2 shiroshi staff 68 8 5 13:17 mydir
ファイルを作成します。
$cat > mydir/file.txt
aaa
ctrl + D
ディレクトリのパーミションの読み書きを不許可(100
)にします。
$ chmod 100 mydir
$ ls -al | grep mydir
d--x------ 3 shiroshi staff 102 8 5 13:22 mydir
ディレクトリのパーミションは、ファイルのパーミションとは独立しているので、mydir
に作成したファイルは読み書き可能です。
書き込み
$ echo 'bbb' >> mydir/file.txt # >> は追記
読み込み
$ less mydir/file.xtx
aaa
bbb
一方ディレクトリの読み書きを不許可にしたので下記操作はパーミッションエラーが発生します。
ディレクトリの書き込みが不許可のため新規ファイル(およびサブディレクトリ)は作成できません。
$ cat > mydir/new.txt
-bash: mydir/new.txt: Permission denied
$ ls -al mydir
ls: : Permission denied
次にディレクトリの読み書きを許可し実行を不許可にします。 mydir以下の内容は検索できなくなるので下記コマンドはパーミッションエラーとなります。
$ cd mydir
cd: mydir: Permission denied
$ cat > mydir/file.txt
-bash: mydir/file.txt: Permission denied
$ less mydir/file.txt
mydir/file.txt: Permission denied
読み込みが許可されているのでlsコマンドは使用できます。
$ ls -al mydir | grep mydir
drw------- 3 shiroshi staff 102 8 5 13:22 mydir
書き込みが許可されていてもmydir以下の内容がわからないので実際は新規作成はできません。
$ cat > mydir/file2.txt
-bash: mydir/file2.txt: Permission denied
現在のマスク値確認
$ umask
0022
マスク値設定
$ umask 222
UNIXはファイルを作成するとき、仮パーミッション0666と、設定されたマスクの否定値をアンド計算してパーミッションを決定しています。またディレクトリを作成するときは 仮パーミッション0777と、設定されたマスクの否定値をアンド計算してパーミッションを決定しています。
「新UNIX/Linux入門」(p123)
root
)ユーザー(スーパーユーザー)$ sudo useradd foo
foo
ユーザーを作成すると自動的にfoo
グループが作成されるfoo
グループをfoo
ユーザーのプライマリーグループ
とよぶサブグループ
とよぶ# ユーザー foo のパスワードを変更。
$ sudo passwd foo
新しいパスワード:
ユーザー/グループ関連のファイルは/etcにあります。
/etc/passwd
ユーザー情報/etc/group
グループ情報/etc/sudoers
sudoとユーザーを関連付ける情報etc/passwd
第1フィールド: ユーザ名(ログイン名)
第2フィールド: (暗号化パスワード)
第3フィールド: ユーザ番号(UID)
第4フィールド: グループ番号(GID)
第5フィールド: コメントフィールド(名前など)
第6フィールド: ホームディレクトリーのパス
第7フィールド: ログイン・シェル
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
sys:x:3:3:sys:/dev:/usr/sbin/nologin
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/usr/sbin/nologin
man:x:6:12:man:/var/cache/man:/usr/sbin/nologin
lp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologin
mail:x:8:8:mail:/var/mail:/usr/sbin/nologin
news:x:9:9:news:/var/spool/news:/usr/sbin/nologin
uucp:x:10:10:uucp:/var/spool/uucp:/usr/sbin/nologin
proxy:x:13:13:proxy:/bin:/usr/sbin/nologin
www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin
backup:x:34:34:backup:/var/backups:/usr/sbin/nologin
list:x:38:38:Mailing List Manager:/var/list:/usr/sbin/nologin
irc:x:39:39:ircd:/var/run/ircd:/usr/sbin/nologin
gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/usr/sbin/nologin
nobody:x:65534:65534:nobody:/nonexistent:/usr/sbin/nologin
systemd-network:x:100:102:systemd Network Management,,,:/run/systemd/netif:/usr/sbin/nologin
systemd-resolve:x:101:103:systemd Resolver,,,:/run/systemd/resolve:/usr/sbin/nologin
syslog:x:102:106::/home/syslog:/usr/sbin/nologin
messagebus:x:103:107::/nonexistent:/usr/sbin/nologin
_apt:x:104:65534::/nonexistent:/usr/sbin/nologin
lxd:x:105:65534::/var/lib/lxd/:/bin/false
uuidd:x:106:110::/run/uuidd:/usr/sbin/nologin
dnsmasq:x:107:65534:dnsmasq,,,:/var/lib/misc:/usr/sbin/nologin
landscape:x:108:112::/var/lib/landscape:/usr/sbin/nologin
sshd:x:109:65534::/run/sshd:/usr/sbin/nologin
pollinate:x:110:1::/var/cache/pollinate:/bin/false
ubuntu:x:1000:1000:Ubuntu:/home/ubuntu:/bin/bash
mysql:x:111:116:MySQL Server,,,:/nonexistent:/bin/false
通常、/etc/passwd
のパスワードはx
と表示される(暗号化されていることを意味する)。
パスワードは/etc/shadow
に記載されている。/etc/shadow
の表示にはルート権限が必要。
現在のユーザー
$ id
uid=1000(ubuntu) gid=1000(ubuntu) groups=1000(ubuntu),4(adm),20(dialout),24(cdrom),25(floppy),27(sudo),29(audio),30(dip),44(video),46(plugdev),108(lxd),114(netdev)
$ id root
uid=0(root) gid=0(root) groups=0(root)
$ sudo id
# rootによってidを実行したことになる
uid=0(root) gid=0(root) groups=0(root)
$ sudo groupadd mygroup
# fooユーザーをmygroupへ追加
$ sudo gpasswd -a foo mygroup
$ sudo gpasswd -d foo mygroup
$ groups foo
less /etc/group
root:x:0:
daemon:x:1:
bin:x:2:
sys:x:3:
adm:x:4:syslog,ubuntu
tty:x:5:
disk:x:6:
lp:x:7:
mail:x:8:
news:x:9:
uucp:x:10:
man:x:12:
proxy:x:13:
kmem:x:15:
dialout:x:20:ubuntu
fax:x:21:
voice:x:22:
cdrom:x:24:ubuntu
floppy:x:25:ubuntu
tape:x:26:
sudo:x:27:ubuntu
audio:x:29:ubuntu
dip:x:30:ubuntu
www-data:x:33:
backup:x:34:
operator:x:37:
list:x:38:
irc:x:39:
src:x:40:
gnats:x:41:
shadow:x:42:
utmp:x:43:
video:x:44:ubuntu
sasl:x:45:
plugdev:x:46:ubuntu
staff:x:50:
games:x:60:
users:x:100:
nogroup:x:65534:
systemd-journal:x:101:
systemd-network:x:102:
systemd-resolve:x:103:
input:x:104:
crontab:x:105:
syslog:x:106:
messagebus:x:107:
lxd:x:108:ubuntu
mlocate:x:109:
uuidd:x:110:
ssh:x:111:
landscape:x:112:
admin:x:113:
netdev:x:114:ubuntu
ubuntu:x:1000:www-data
ssl-cert:x:115:
mysql:x:116:
引用元:https://kazmax.zpp.jp/linux_beginner/etc_group.html
プロセスの UID は実行ユーザーの UID になる。
例)
ls を ubuntu で実行すればプロセスの UID は ubuntu になってリストできるファイルも ubuntu の権限で許可されたファイルになる。 また ls を sudo で実行すればプロセスの UID は root になってリストできるファイルも root の権限で許可したファイルになる。
setuid の挙動を確認する。 ls コマンドのコピー myls を例に説明する。
$ cp $(which ls) ./myls
// setuid を有効化
$ chmod u+s ./myls
$ ls ./myls
-rwsr-xr-x 1 ubuntu ubuntu 35336 Apr 6 00:22 ./myls*
setuid を有効にすると実行プロセスの UID は(実行ユーザーではなく)ファイル所有者ユーザーの UID になる。 setuid が有効な場合に sudo で実行( root はパーミッションに関わらず全ての処理を実行できる )すると実行プロセスの UID は ubuntu( ファイル所有者ユーザー ) になってリストできるファイルも ubuntu の権限が許可したファイルになる。
ref. https://blog.fenrir-inc.com/jp/2012/02/file_permission.html
capabilityをスレッドに割り当てることで、そのスレッドが特定のアクションを実行できるかどうかを決定できます
ref. コンテナセキュリティ Liz Rice p 47
capabilities は非 root ユーザーが実行したプロセスでは通常 capabilites はない。
$ sleep 1000
$ ps auxf | grep sleep
// sleep 1000 の PID が仮に 1234 とする
$ getpcaps 1234
1234: =
root で実行する。
$ sudo sleep 1000
$ ps auxf | grep sleep
// sleep 1000 の PID が仮に 2345 とする
$ getpcaps 2345
2345: =ep
ep
は https://unix.stackexchange.com/questions/515881/what-does-the-ep-capability-mean を参照。
That binary has ALL the capabilites permitted (p) and effective (e) from the start.
リソース( CPU 、メモリ、ネットワーク入出力な)の使用を制限するもの。 特定のプロセスが全てのリソースを独占して他のプロセスに悪影響を与えるのを防ぐ。
リソースの可視性に関するもの。
多くのユースケースでsudo
はroot
ユーザーに成り代わってコマンドを実行します。
以下root
ユーザーに成り代わる前提で記載します。
su
:substitute
の略で指定したユーザーに成り代わります
- パスワードは成り代わるユーザーのパスワードが必要です(例:su root
の場合root
のパスワードが必要になります)sudo
:rootユーザー(または他のユーザー)に成り代わってコマンドを実行します
- パスワードはユーザーのパスワードです(rootユーザーのパスワードではなくsudo
を実行するユーザーのパスワードになります)
- /etc/sudoers
の定義によりパスワード入力無しでsudo
できるユーザーも可能です
- rootユーザーのパスワードを一般のユーザーに知らせる必要がないのでセキュリティ面も強化できますsudo
を実行可能なユーザー/コマンド情報は、/etc/sudoers
で定義します。
/etc/sudoers
は、visudo
コマンドで編集します。
-
またはl
$ su - foo
// または
$ su -l foo
ログインシェルを起動するので、環境変数が再設定されます。 -- Linux ブートキャンプ(p.64)
FHSは以下の直下/
のディレクトリは以下の基準で分類できます。
例)
/etc
:静的だが共有できない/usr
(User Services and Routines
):静的かつ共有できる/var
(Variable
):動的/var
は/usr
から動的なものを移動/usr
は静的かつ共有可能になったUbuntuはDisco Dingo
から/bin
、/sbin
は、/usr/bin
、/usr/sbin
のシンボリックリンクになりました。
$ ls -al /{bin,sbin}
lrwxrwxrwx 1 root root 7 Nov 29 2021 /bin -> usr/bin
lrwxrwxrwx 1 root root 8 Nov 29 2021 /sbin -> usr/sbin
Linuxはデバイスを抽象化したデバイスファイルとして扱います。
デバイスファイルは、/dev
ディレクトリに配置されます。
購入したHDDをLinuxから使えるようにするには、パーティションの作成、フォーマット、マウントという手順を踏む必要があります ※2。
パーティションの作成では、fdiskコマンド(連載第187回)やgdiskコマンド(第188回)などを使います。その後、mkfsコマンドでフォーマットし、mountコマンド(第183回)でマウントします。
-- https://atmarkit.itmedia.co.jp/ait/articles/1803/09/news034.html
df -hT
:デバイスの使用状況を表示 -T
ファイルフォーマットタイプを表示するlsblk -f
(list block devices):ブロックデバイスを一覧表示 -f
ファイルシステムを表示するfdisk -l
:パーティション情報を調べるdu
:ディクス使用量を表示マウント追加の流れ
/dev/xvdf
)現在のマウントを確認します。
$ mount
またディスク容量を調べるdf
(Disk Free
)コマンドは、容量だけでなくでマウント位置を調べることができます。
ファイルシステム構築(フォーマット)はmkfs
コマンドを使用します。
// mkfs -t タイプ名 デバイス名
// 例
$ sudo mkfs -t ext4 /dev/xvdf
※ Linuxのファイルシステムはext4
が標準のようです。
/etc/fstab
ファイルで決められた内容を自動でマウントさせることができます。
逆に/etc/fstab
ファイルで自動マウントを有効にしていないとOSを再起動するとマウントが解除されます。
デバイスには色々な種類があります。
有名なデバイスタイプにブロックデバイスやキャラクタデバイスがあります。
ブロックデバイスを確認するには下記コマンドが使えます。
$ lsblk -f
NAME FSTYPE LABEL UUID FSAVAIL FSUSE% MOUNTPOINT
loop0 squashfs 0 100% /snap/amazon-ssm-agent/5163
loop1 squashfs 0 100% /snap/amazon-ssm-agent/5656
//...
xvda
└─xvda1 ext4 cloudimg-rootfs 436cf32d-5e3d-46ca-b557-f870c8a25794 2.7G 64% /
xvdf ext4 ff0dfd8e-c1f2-4e1c-897e-327c042890cd
SquashFS (.sfs) はLinux向けの 圧縮された読み込み専用ファイルシステムである。SquashFSはファイル、inodeとディレクトリを圧縮し、高圧縮のためブロックサイズを1024KBまでサポートする。SquashFSファイルシステムにアクセスするための(GPLでライセンスされた)フリーソフトウェアもSquashFSと呼ばれる。
mount
、df
、lsblk
で調べたデバイス名をLinuxファイルシステムにマウントするには下記コマンドを使用します。
$ mount [-t ファイルシステムタイプ] デバイス名 マウントポイント名
// 例
$ sudo mount -t ext4 /dev/xvdf /data
$ umount デバイス名またはマウントポイント名
/dev/xvdg
はデバイスが挿入されたときにLinux
により自動で命名されます。
/dev/xvdg
デバイスにext4ファイルシステムを構築します。
$ sudo mkfs -t ext4 /dev/xvdf
マウントポイント(ディレクトリ)を作成します。
$ sudo mkdir /data
$ sudo chown ubuntu /data
$ sudo chgrp ubuntu /data
$ sudo chmod 755 /data
マウントします。
$ sudo mount -t ext4 /dev/xvdf /data
システムブート時に常にマウントするよう/etc/fstab
ファイルを編集します。fstab
(file system table)ファイルへ/dev/xvdf
を追加します。
Amazon Linux
/dev/xvdf /data ext4 defaults,nofail 0 2
Ubuntu
/dev/xvdf /data ext4 defaults,nofail,nobootwait 0 2
Amazon Linuxではnobootwaitを付けるとマウントできませんでした。
プロセスのマウントは/proc/{{プロセスID}}
にディレクトリが作成されます。
$ mount
.....
sysfs on /sys type sysfs (rw,nosuid,nodev,noexec,relatime)
proc on /proc type proc (rw,nosuid,nodev,noexec,relatime)
.....
カレントプロセスのIDを確認します。
# $$はカレントプロセスのIDを表示
$ echo $$
1105
カレントプロセス(例:1105)がマウントされたディレクトリを確認します。
$ ls -l /proc/1105
total 0
-r--r--r-- 1 ubuntu ubuntu 0 May 21 06:33 arch_status
dr-xr-xr-x 2 ubuntu ubuntu 0 May 21 06:33 attr
-rw-r--r-- 1 ubuntu ubuntu 0 May 21 06:33 autogroup
-r-------- 1 ubuntu ubuntu 0 May 21 06:33 auxv
-r--r--r-- 1 ubuntu ubuntu 0 May 21 06:33 cgroup
--w------- 1 ubuntu ubuntu 0 May 21 06:33 clear_refs
-r--r--r-- 1 ubuntu ubuntu 0 May 21 04:41 cmdline
-rw-r--r-- 1 ubuntu ubuntu 0 May 21 06:33 comm
-rw-r--r-- 1 ubuntu ubuntu 0 May 21 06:33 coredump_filter
-r--r--r-- 1 ubuntu ubuntu 0 May 21 06:33 cpu_resctrl_groups
-r--r--r-- 1 ubuntu ubuntu 0 May 21 06:33 cpuset
lrwxrwxrwx 1 ubuntu ubuntu 0 May 21 06:33 cwd -> /home/ubuntu
-r-------- 1 ubuntu ubuntu 0 May 21 06:33 environ
lrwxrwxrwx 1 ubuntu ubuntu 0 May 21 06:33 exe -> /usr/bin/bash
dr-x------ 2 ubuntu ubuntu 0 May 21 04:41 fd
dr-x------ 2 ubuntu ubuntu 0 May 21 06:33 fdinfo
-rw-r--r-- 1 ubuntu ubuntu 0 May 21 06:33 gid_map
-r-------- 1 ubuntu ubuntu 0 May 21 06:33 io
-r--r--r-- 1 ubuntu ubuntu 0 May 21 06:33 limits
-rw-r--r-- 1 ubuntu ubuntu 0 May 21 06:33 loginuid
dr-x------ 2 ubuntu ubuntu 0 May 21 06:33 map_files
-r--r--r-- 1 ubuntu ubuntu 0 May 21 06:33 maps
-rw------- 1 ubuntu ubuntu 0 May 21 06:33 mem
-r--r--r-- 1 ubuntu ubuntu 0 May 21 06:33 mountinfo
-r--r--r-- 1 ubuntu ubuntu 0 May 21 06:33 mounts
-r-------- 1 ubuntu ubuntu 0 May 21 06:33 mountstats
dr-xr-xr-x 54 ubuntu ubuntu 0 May 21 06:33 net
dr-x--x--x 2 ubuntu ubuntu 0 May 21 05:44 ns
-r--r--r-- 1 ubuntu ubuntu 0 May 21 06:33 numa_maps
-rw-r--r-- 1 ubuntu ubuntu 0 May 21 06:33 oom_adj
-r--r--r-- 1 ubuntu ubuntu 0 May 21 06:33 oom_score
-rw-r--r-- 1 ubuntu ubuntu 0 May 21 06:33 oom_score_adj
-r-------- 1 ubuntu ubuntu 0 May 21 06:33 pagemap
-r-------- 1 ubuntu ubuntu 0 May 21 06:33 patch_state
-r-------- 1 ubuntu ubuntu 0 May 21 06:33 personality
-rw-r--r-- 1 ubuntu ubuntu 0 May 21 06:33 projid_map
lrwxrwxrwx 1 ubuntu ubuntu 0 May 21 06:33 root -> /
-rw-r--r-- 1 ubuntu ubuntu 0 May 21 06:33 sched
-r--r--r-- 1 ubuntu ubuntu 0 May 21 06:33 schedstat
-r--r--r-- 1 ubuntu ubuntu 0 May 21 06:33 sessionid
-rw-r--r-- 1 ubuntu ubuntu 0 May 21 06:33 setgroups
-r--r--r-- 1 ubuntu ubuntu 0 May 21 06:33 smaps
-r--r--r-- 1 ubuntu ubuntu 0 May 21 06:33 smaps_rollup
-r-------- 1 ubuntu ubuntu 0 May 21 06:33 stack
-r--r--r-- 1 ubuntu ubuntu 0 May 21 04:41 stat
-r--r--r-- 1 ubuntu ubuntu 0 May 21 04:52 statm
-r--r--r-- 1 ubuntu ubuntu 0 May 21 04:41 status
-r-------- 1 ubuntu ubuntu 0 May 21 06:33 syscall
dr-xr-xr-x 3 ubuntu ubuntu 0 May 21 06:33 task
-rw-r--r-- 1 ubuntu ubuntu 0 May 21 06:33 timens_offsets
-r--r--r-- 1 ubuntu ubuntu 0 May 21 06:33 timers
-rw-rw-rw- 1 ubuntu ubuntu 0 May 21 06:33 timerslack_ns
-rw-r--r-- 1 ubuntu ubuntu 0 May 21 06:33 uid_map
-r--r--r-- 1 ubuntu ubuntu 0 May 21 06:33 wchan
ref.
オリジナルのシンボリックリンクlink.txtを作成
$ ln -s original.txt symlink.txt
ハードリンク
$ ln original.txt hardlink.txt
realdir
ディレクトリのシンボリックリンクcurrent
ディレクトを作成します。
$ mkdir realdir
$ echo "This is file1" > realdir/test1.txt
$ echo "This is file2" > realdir/test2.txt
realdir
ディレクトリのシンボリックリンクcurrent
ディレクトリを作成。
$ ln -s realdir current
$ ll
lrwxr-xr-x 1 shiroshi staff 7B 8 23 19:11 current -> realdir
drwxr-xr-x 4 shiroshi staff 136B 8 23 19:11 realdir
シンボリックリンクを編集すると実体も編集されます。
service {{service_name}} start
`systemctl start {{service_name}}'