ulimitコマンド
概要
ulimit
とは、プロセスへの各種の制限を設定します。
...個人的にはあまりありがたみが感じられないのでちょこっとググってみたらこんな文章が。
プロセスがメモリやCPUタイム等を多く消費しないようにするために、ユーザごとに制限を 設定することができます。 (https://www.express.nec.co.jp/linux/distributions/knowledge/system/ulimit.html)
いわゆる昔のような今ほどメモリが大きくない頃には活用していたのでしょうか。
実行例
limit -a
上記のようにすると現在の設定を確認することができます。
私の環境では以下のような出力がされました。
core file size (blocks, -c) 0 data seg size (kbytes, -d) unlimited file size (blocks, -f) unlimited max locked memory (kbytes, -l) unlimited max memory size (kbytes, -m) unlimited open files (-n) 256 pipe size (512 bytes, -p) 1 stack size (kbytes, -s) 8192 cpu time (seconds, -t) unlimited max user processes (-u) 1418 virtual memory (kbytes, -v) unlimited
出力されたものは変更ができます。例えばcoreファイルのサイズを制限したい時は、
ulimit -c 1024
このように指定します。...が、数値がブロックサイズであるとかなんとか、ちょっとよくわからなかったので宿題になりそうです。
2019/02/24追記 職場の先輩に聞いてみました→ブロックサイズについて尋ねてみた
まとめ
現在のプロセスの制限設定を確認する
ilimit -a
特定のプロセスの制限を設定する
ulimit [プロセスを示すオプション] [値]
umaskコマンド
概要
umask
コマンドでは、新規作成するファイルデフォルトのパーミッションを決めることができます。
実行例
特に値を指定せずumask
を実行すると、今の設定を確認できます。
umask
私の環境で実行したところ、0022
という結果が返ってきました。
この返ってきた数値の下3桁を見れば、現在の設定がわかります。つまり、今回は022という値から読み取ります。
前から見ていきますと、それぞれの桁が「所有者」「グループ」「ゲストユーザー」のパーミッションを表しています。
数値は、パーミッションを表し、以下のようになっています。
数値 | 意味 |
---|---|
0 | 変更可能 |
1 | 実行不可能 |
2 | 書き込み不可能 |
4 | 読み込み不可能 |
そして、上記のような権限を合算した数値がパーミッションを表します。
例えば今回の場合だと、0は変更可能で、2は書き込み不可能となります。1+1も2ではありますが、同じ権限を指定するのはおかしいですよね。なのでこの場合は書き込み不可能の2となります。
なので、自分は変更可能、グループは書き込みのみ不可能、ゲストユーザーは実行も読み書きも不可能とするには以下のようになります。
umask 027
まとめ
umask
コマンドで作成されるファイル全てのデフォルトのパーミッションを設定できます。
umask [自分のパーミッション値][グループのパーミッション値][ゲストユーザーのパーミッション値]
補足
パーミッションに関しては、chmod
というコマンドも同時に覚えておくと便利です。
こちらのコマンドは、ファイルに対してパーミッションを変更することができます。
ですが、数値の扱いがumaskとは異なるので、それはまた別にまとめたいです。
lsofコマンド
概要
lsof
コマンドは、実行中のプロセスの確認を行うコマンドです。「3000ポートを使用しているプログラムはなんだろう?」って時に調べるのに役立ちます。
実行例
lsof -i:3000
上記のコマンドで、3000ポートを実行しているプログラムを確認できます。
まとめ
特定のポート番号を使用しているプログラムを調べる
lsof -i:[ポート番号] # 複数指定する場合 lsof -i:[ポート番号],[ポート番号]
aliasコマンド
概要
alias
コマンドを使用すると、あるコマンドを実行する時に任意のコマンドで呼び出すことが可能になります。
実行例
では、pwd
とls
コマンドを続けて実行するコマンドfoo
をaliasとして登録します。
以下のようになります。
alias foo='pwd; ls'
これでfoo
を実行するだけでpwd
とls
が続けて実行されます。便利です。
登録を解除したい場合は、unalias
を使用します。
unalias foo
まとめ
alias
コマンドのエイリアスを登録するコマンド。
alias [新しく登録するコマンド名]='[実行するコマンド]'
unalias
登録したエイリアスを解除するコマンド。
unalias [解除したいエイリアスコマンド名]
lessコマンド ーファイルを1画面ずつ表示
私は今までファイルの中身を見たい時more
コマンドを使用していたのですが、なんでもless
というコマンドの方が使いやすいらしいです。
使い方は、中身を見たいファイル名を指定すればOKです。
使用例
less sample.txt
ファイルの閲覧は上下ボタンで操作、もしくはReturnキーで1行ずつ進めていきます。
閲覧を終える場合はq
キーを押します。
同じようにファイルの中身を閲覧するコマンドとして、more
がありますが、コレとの違いは
- ファイルの末尾でReturnキーを押すと閲覧を終了(more)
- ファイルの末尾でRetunキーを押しても何も効果がない(less)
という点かと思います。
more
が勢いに任せてReturnキーを押し続けていたら末尾まで行ってしまい閲覧を終えてしまったという事故がありそうですが、less
はそういう事故が防げそうですね。
あとは、more
コマンドの場合、上下ボタンで操作ができないこともあるようで。その点でもless
の方が使用しやすいという感じでしょうか。
それではmore
コマンドの存在意義は...?ってふと思ってしまったのですが、それは暇な時に調べてみようかと思います。理由、あるのでしょうか...。
cpコマンドでコピーしたファイルにコピーした日時をつける
cdコマンドは、ファイルやディレクトリのコピーが行えるコマンドです。
例えば、以下の例では、sample.txt
というファイルを作成した後、sample.txt
をsample_2.txt
というファイルという名称でコピーをしています。
touch sample.txt cp sample.txt sample_2.txt
でも、_2
の箇所が、今現在の日時にできたら便利かと思います。
そのような処理を行いたいとき、以下のようなコマンドを実行します。
cp sample.txt sample_`date "+%Y%m%d%H%M%S"`.txt
こうすると、sample_20190120191732.txt
のようなファイルがコピーされます。date
コマンドについてはまだまとめきれていないのですが...日時を出力するコマンドという認識で大丈夫かと思います。
日時が自動で出力されるようになれば、バックアップを取りたい時なんかに役に立ちそうですね。