Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article?

ここで人間が「y(あるいはYes)」と入力しないと先に進まない、問題があればNと入力して終了したり、CTRL+Cで強制終了させたり。 そんなプロンプト機能を実装してみます。 先にネタばらしをすると、全部readコマンドがやってくれます。 例1 : 「Hit enter key!」 単に実行を一時停止して、問題がなければエンター(リターン)キーを押すことで先に進むようなシェルスクリプトは、このようになります。 単に「Hit enter: 」と表示して処理が一時停止します。エンター(リターン)キーを押せば先に進みます。 もし前段階の処理で何かしら問題が見つかれば、CTRL+Cで強制終了させても良いでしょう。 例2 : 「ok? (y/N):」 Yと入力しないと実行しない、Yあるいはy以外では終了させるようなパターンだと、このように書けます。
はじめに ディレクトリ同士をdiffコマンドで再帰的に比較するときは、 diff -r <dir1> <dir2>みたいにしますよね。 その中で特定ファイル名の結果を除外したい場合は diff -r -x <filename> <dir1> <dir2>みたいにすればOK。 参考: https://linuxjm.osdn.jp/html/gnumaniak/man1/diff.1.html しかし!除外はできるくせに「特定ファイル名の結果だけを表示」ってのは diffコマンドの機能としては存在しないようです。 -qオプション付きであれば、diff -qr <dir1> <dir2> | grep <filename>でOKだけど、 ファイルの中身までちゃんと見たいときはそうは行かない。 やりたくなる度に調べては「やっぱないよなー。。。」ってガッカリしてたんですが、 無いならシェルスクリプ
どうも、江川(egawa)くんです。 Linuxでシェルスクリプトなどを書いていると以下のような条件に遭遇することがあるので、 備忘録的に残していきたいと、おっもいま〜す。 複数のコマンド実行を一行で記述したい あるコマンドが問題なく実行された場合のみ、次のコマンドを実行したい あるコマンドが失敗したら、次のコマンドを実行したい 更新情報 2016/7/8 新規作成 2016/7/8 レイアウトなど見やすく修正 2016/8/18 テキストを一部修正 種類 ここで出てくるのは以下のみです。 ; (セミコロン) &(アンパサント) &&(アンパサントアンパサント) |(パイプ) ||(パイプパイプ) 使用例 コマンド1が終了したらコマンド2を実行する(実行結果に関わらず) コマンド1が異常終了しても、コマンド2は実行されます 使い方
CPU、もしくはストレージがボトルネックになっている場合、vmstatコマンドを用いて切り分けを行います。 [root@test ~]# vmstat 1 procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu----- r b swpd free buff cache si so bi bo in cs us sy id wa st 0 0 271328 110320 59792 392132 0 0 1 165 0 5 1 0 88 11 0 0 0 271328 110304 59792 392132 0 0 0 16 101 175 1 0 99 0 0 0 0 271328 110304 59792 392132 0 0 0 436 154 276 0 0 98 2 0 右から3番目の
2008-08-22 大抵、自分がカレントディレクトリに入っていることを忘れてることが多いです。 $ su - # mount /dev/dvd /mnt で mount してるときに、他のターミナルから $ cd /mnt $ ls $ .. などと作業していたのに、それを忘れて、root になっているターミナルで # umount /mnt umount: /mnt: device is busy とか言われてしまいます。この場合は、lsof や fuser を使えば、その理由がわかるので、リカバーは簡単です。 # lsof /mnt COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME bash 12756 kunitake cwd DIR 7,0 2048 1536 /mnt # fuser -v /mnt USER PID ACCESS C
Linux基本コマンドTips一覧 本連載では、Linuxの基本的なコマンドについて、基本的な書式からオプション、具体的な実行例までを分かりやすく紹介していきます。今回は、テキストのパターン処理を行う「awk(gawk)」コマンドです。第115回に続き、awkの基本的な使い方を説明します。 awk(オーク)コマンドとは? 「awk」は空白などで区切られたテキストを処理するコマンドです。演算機能もあり、プログラミング言語としても使用されています。 Linux環境で使用されているのは、GNUプロジェクトによる「gawk」コマンドが多く、例えばCentOS 7の場合、awkは/usr/bin/gawkへのシンボリックリンクとなっています。 Ubuntu 15では、Michael D. Brennan氏による「mawk」が収録されています(awkは/etc/alternatives/awkへの、/
[root@server flock]# flock --version flock from util-linux 2.23.2 [root@server flock]# flock --help Usage: flock [options] <file|directory> <command> [command args] flock [options] <file|directory> -c <command> flock [options] <file descriptor number> オプション: -s --shared get a shared lock -x --exclusive get an exclusive lock (default) -u --unlock remove a lock -n --nonblock fail rather than wait -w
#!/bin/sh # 二重起動チェック if [ $$ != `pgrep -fo $0` ]; then echo "Already running!" >&2 exit 9 fi # メイン処理 echo "[`date '+%Y/%m/%d %T'`] Sleep 10 seconds..." sleep 10 exit 0 $$ は、自分自身のプロセスID。 $0 は、自分自身のプロセス名(相対パス)。 pgrep -fo $0 は、自分自身のプロセスIDを取得。 メリット・デメリットについて メリットは、cron 実行しないのであればこれで充分である。 デメリットは、cron で実行された場合にチェックが効かない。 理由は、pgrep -fo $0 が cron で実行した際のプロセスIDとなってしまう(子プロセス($0)のプロセスIDにならない)ため。 2. 作成例(その2)
2014/8/28更新 対応バージョン: 8.4 dateコマンドを使って日時計算をするには--dateオプションに続けて日時と計算の単位を指定すればよい。 指定できる単位は以下の通り。 年: years 月: months 日: days 時: hours 分: minutes 秒: seconds これに数字をつけて「2 days ago」のように自然なフレーズで指定すれば日付計算をやってくれる。 以下にいくつかサンプルを示す。dateはGNU版の最近のバージョンであれば特に問題ないだろう。 % date --version date (GNU coreutils) 8.4 : 今日から5日後 % date +%Y%m%d 20140827 % date --date "5 days" +%Y%m%d 20140901 2014/1/1から3日前 日付を指定するとその日を起点に計算され
よく、時間のかかる複数の処理をパラレルで実行し、かつ後からタスクの追加もさせたい、コマンドをキューのようなものに入れておいて処理させたいということがある。 ただ単に実行するコマンドをシェルスクリプトにしただけではこれはできないので、なにかいい感じのものはないかなーと探してみたところ、『Task Spooler』なるツールがそのものズバリな機能を持っているようだ。 というわけで、早速試してみることにする。なお、OSはUbuntu Server 16.04 LTSを用いている。 1. インストール Ubuntuであれば、aptでインストールができる(CentOS等の場合、ソースを取ってきてのコンパイルが必要になる)。 sudo apt install task-spooler インストールできたら、tspを起動させよう。 tsp 2. 使ってみる インストールができたら、実際に利用してみよう。
Bash のAliasに引数を渡す。 何も考えずに、Aliasをするとそのまま渡される。 alias some=echo some aaaaaaa alias は実行前に、bashが解釈するために some aaaaaaa は echo aaaaaaa` に展開される。 出来ない。 なので次のようなことは出来ない。 alias git-push-to='git push "$@" master' これは、bash の実行前に git-push-to remoteA を git push "" master remoteA と展開されてしまう。 展開順について。 先の例は、展開が次のようになる。 git-push-to remoteA これは、次のように展開。 git push "" master remoteA 引数は受け取れない。 引数は受け取れない。なぜなら、単純な置換がされるだけだか
パフォーマンスなどの調査をする時に利用する便利コマンドメモ。 これないぞ、あれないぞなどあると思いますがとりあえず本などを参考にまとめたものをピックアップしています。 参考 [24時間365日] サーバ/インフラを支える技術 ‾スケーラビリティ、ハイパフォーマンス、省力運用 (WEB+DB PRESS plusシリーズ) 絵で見てわかるシステムパフォーマンスの仕組み CPU使用率やメモリなど全体の概要把握 top デフォルトでは3秒ごとにOSで利用しているプロセスの数や状態、またOS全体のシステムリソース状況が分かります。 パフォーマンスが悪い場合にOS全体としてどのリソースの利用が多いのか(CPU負荷なのかメモリ利用率が高いのか)などの判断に有用だと思われます。 top - 22:36:56 up 28 min, 2 users, load average: 0.00, 0.02, 0.
2009年01月06日21:36 echoコマンドで改行やタブを扱うには@Linux bash カテゴリdebianecho UNIX系OSでも最も有名な部類に入るコマンドechoは、引数の文字列や変数の中身を表示することができます。つまりCでいうprintf、JAVAでいうSystem.out.printlnみたいなものですね。 # echo "hoge" hoge 改行文字\nがあってもそのまま出力します。( 環境によっては、説明文は "\" 、コマンド例には"¥"と表示されますが、同じ文字です) # echo "hoge\nhoge" hoge\nhoge -eオプションによって\nは改行として扱われます。(これはbashの場合でDebianのdashの場合は最下位の追記を参照) # echo -e "hoge\nhoge" hoge hoge ただし、ここで一つ注意。ダブルクォー
sedは与えられた文字列を,ルールに従って変換するコマンドだ。例えば,文字列の置換,行の削除といった処理が行える。 変換に利用できるルールには下表「sedの条件式」のような条件式が利用できる。例えば,文字列を挿入したい場合は「a」や「i」の後に挿入する文字列を指定する。文字列を置換したい場合は「s/置換ルール/置換文字/」と実行する。 置換ルールの最初に数値を指定すると,指定した行のみが処理される。例えば,「3d」と指定すると,3行目が削除される。 sedコマンドで実際に変換を行う場合は,変換処理内容は「-e」オプションを指定した後に記述する。また,sedコマンドに指定したファイルの内容を処理する。例えば,source.txt内のLinuxをリナックスに置換したい場合は,次のように実行する。 $ sed -e "s/Linux/リナックス/g" source.txt 結果は標準出力(ディス
→ 他のプログラミング言語と同様に = を使用する。 シェルスクリプトでも C言語などと同様に = を使用することで変数に値を設定することができる。ただし、C言語とは違い = の前後にスペースがあってはいけない。 また、変数名の大文字と小文字は区別されるため変数 VAR と変数 var は別物として扱われる。さらにシェル変数に「型」は存在しないので、文字列や数値を区別なく設定できる。 ポイントをまとめると以下のとおりとなる。 = を使う 値の設定時は変数名の先頭に $ を付けない ($ は参照時のみ) = の前後にスペースを入れない (前後にスペースがあるとエラー) 型は存在しない (declare コマンドや typeset コマンドで似たようなことができるが推奨はしない) 変数名の大文字・小文字は区別される (VAR と var は別物) 特に「2」は初心者が犯しがちなミスなので注意す
curlはwget, lwp-request(GET, HEAD), lynxと同じようなcliのhttp client。だと思ってたらもっと機能があるようなので、man curl読んで色々調べてみた。HTTP(S)以外にもかなり対応してた。 curl is a tool to transfer data from or to a server, using one of the supported protocols (HTTP, HTTPS, FTP, FTPS, SCP, SFTP, TFTP, DICT, TELNET, LDAP or FILE). とりあえず良く使いそうなhttp, ftp関連のメモ。DLだけじゃなくて、アップロードもできるのが素晴らしい。 基本 syntax curl [optinons] URL URL It will then default to HTT
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く