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コマンドを使用すると、あるコマンドを実行する時に任意のコマンドで呼び出すことが可能になります。

実行例

では、pwdlsコマンドを続けて実行するコマンドfooをaliasとして登録します。

以下のようになります。

alias foo='pwd; ls'

これでfooを実行するだけでpwdlsが続けて実行されます。便利です。

登録を解除したい場合は、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コマンドの存在意義は...?ってふと思ってしまったのですが、それは暇な時に調べてみようかと思います。理由、あるのでしょうか...。

mkdirコマンド

概要

mkdirコマンドは、ディレクトリを作成するコマンドです。

mkdir sample

上記のコマンドでは、sampleというディレクトリが作成されます。 作成した後に、lsコマンドを使用すると、今いるディレクトリ配下のディレクトリやファイルが出力されるので、そこで確認できればOKです。

まとめ

mkdir [作成するディレクトリ名]

cpコマンドでコピーしたファイルにコピーした日時をつける

cdコマンドは、ファイルやディレクトリのコピーが行えるコマンドです。

例えば、以下の例では、sample.txtというファイルを作成した後、sample.txtsample_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コマンドについてはまだまとめきれていないのですが...日時を出力するコマンドという認識で大丈夫かと思います。

日時が自動で出力されるようになれば、バックアップを取りたい時なんかに役に立ちそうですね。