最終更新日: 2026-08-29
TOP(About this memo)) > 一覧(Linux) > 標準入出力・リダイレクト
0 … 標準入力1 … 標準出力2 … 標準エラー出力ps コマンドで「TTY」となっている列が、各プロセスのttyになる。 PID TTY TIME CMD
1468 ttys000 0:00.32 /Applications/Xcode.app/Contents/Developer/usr/bin/xcdevice observe --usb
67494 ttys005 0:00.10 -zsh
5991 ttys007 0:00.13 /bin/zsh -il
27533 ttys007 0:04.72 docker compose up api
ttys007 に複数のプロセスがぶら下がっている(あるターミナルのウィンドウから起動したプロセス群)ことが読み取れる。$ tty
/dev/ttys005
w コマンドで、ログインしているユーザーと実行中のプロセス、および各ttyを確認できる。echo "aaa" > /dev/ttys005
/proc/[プロセスID]/fd/ 配下を見ることで、プロセスごとのファイルディスクリプタの向き先が分かる。/dev/pts/0 になっている。$ ps
PID TTY TIME CMD
7270 pts/0 00:00:00 bash
7322 pts/0 00:00:00 vim
7330 pts/0 00:00:00 ps
$ ls -l /proc/7322/fd
lrwx------ 1 ec2-user ec2-user 64 4月 28 09:14 0 -> /dev/pts/0
lrwx------ 1 ec2-user ec2-user 64 4月 28 09:14 1 -> /dev/pts/0
lrwx------ 1 ec2-user ec2-user 64 4月 28 09:14 2 -> /dev/pts/0
lrwx------ 1 ec2-user ec2-user 64 4月 28 09:14 4 -> /home/ec2-user/.test.txt.swp
/dev/pts/0 は接続しているターミナルの画面にあたる。2 -> /var/log/httpd/error_log となっていて、エラーログがファイルに書き出されていることが分かる。/dev/null になっていることが多い。コマンド > ファイル名(追記は >>)コマンド 2> ファイル名(追記は 2>>)コマンド > ファイル名 2>&12>&1 は、標準エラー出力(ハンドル数値2)を標準出力(ハンドル数値1)へリダイレクトすることを表す。& の後にハンドルの数値を指定する。コマンド 2>&1 > ファイル名 と書くと、2>&1 の時点ではまだ標準出力が端末を指しているため、標準エラー出力は端末に出たままになる。コマンド &> ファイル名 という省略記法も使える。sudo コマンド > ファイル と書くと、リダイレクト自体は元のシェル(sudoされていない権限)が行うため、書き込み権限がないファイルにはリダイレクトできない。sudo sh -c "echo 'aaa' >> test.txt"
-a で追記。script [オプション] ファイル名 で、以降のコマンドと標準出力を記録する。-a で追記。exit もしくは Ctrl-D で記録を終了する。sudo script -a /var/log/log_`date "+%Y%m%d_%H%M%S"`