Linux の date コマンドで今日/明日/昨日や月末や月初、翌月曜日などを求める方法を紹介します。 基本 今 引数を何も指定しないと「今」の時刻が出力されます。
どうも、江川(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. 使ってみる インストールができたら、実際に利用してみよう。
必要ならsudoつける -yオプションは任意(付けなければ途中でyes/no選択。つけたら無条件yes) 2. 実際にメールを送る 送信例。 echo "本文" | mail -s "タイトル" -r from@example.com -c cc1@example.com -c cc2@example.com to1@example.com to2@example.com 本文はecho "本文直書き"もしくはcat ファイル名により指定 -sオプション:タイトル指定 -rオプション:送り主メールアドレス指定 -cオプション:Ccで送るメールアドレス指定 Ccで複数人に送る場合 → 1件ずつ-cオプションで指定 -bオプション:Bccで送るメールアドレス指定 Bccで複数人に送る場合 → 1件ずつ-bオプションで指定 mailコマンドの最後の引数:送り先メールアドレス指定 複数人にToで送
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.
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 ただし、ここで一つ注意。ダブルクォーテーション がないと\がbashで解釈されて認識されません。 # echo -e hoge\nhoge hogenhoge \
sedは与えられた文字列を,ルールに従って変換するコマンドだ。例えば,文字列の置換,行の削除といった処理が行える。 変換に利用できるルールには下表「sedの条件式」のような条件式が利用できる。例えば,文字列を挿入したい場合は「a」や「i」の後に挿入する文字列を指定する。文字列を置換したい場合は「s/置換ルール/置換文字/」と実行する。 置換ルールの最初に数値を指定すると,指定した行のみが処理される。例えば,「3d」と指定すると,3行目が削除される。 sedコマンドで実際に変換を行う場合は,変換処理内容は「-e」オプションを指定した後に記述する。また,sedコマンドに指定したファイルの内容を処理する。例えば,source.txt内のLinuxをリナックスに置換したい場合は,次のように実行する。 $ sed -e "s/Linux/リナックス/g" source.txt 結果は標準出力(ディス
. # 任意の一文字 * # 直前の文字が任意の個数続く文字列(0個も含む) <space><space>* # 連続するSPACEを表す <tab> # TAB .* # 任意の文字列 sed -e "s/aaaa/bbbb/" # 置換 行で最初に出てきた'aaaa'を'bbbb'に置換 sed -e "s/aaaa/bbbb/g" # 入力の全行に渡って置換 (Global) sed -e "s/^aaaa/bbbb/" # 行頭(^)に'aaaa'のもの sed -e "s/aaaa\$/bbbb/" # 行末($)に'aaaa'のもの。$は\でescape sed -e "s/~/bbbb/" # 行頭に'bbbb'を追加 sed -e "s/\$/bbbb/" # 行末に'bbbb'を追加 sed -e "s/.*/abcd/" # すべての行を'abcd'に置換 sed -e
→ 他のプログラミング言語と同様に = を使用する。 シェルスクリプトでも 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
こんばんは、牧野です。 一時期また夜型になってしまっていたのですが、最近はまた朝型生活、というよりも早朝型生活になりました。 仕事の方はというとsymfony案件は一段落して、今はオリジナルのフレームワーク、ライブラリでプログラムを作ったり、javascriptのプログラムを1から書いたりと、マイペースでやっています。 さて、今日も軽めなネタで、知っているといざという時に役立つ、かもしれないLinuxのコマンドです。 サーバ構築や緊急対応などでサーバを触る場合は使う機会があると思います。 ■サーバのOS情報を確認
This page is a Japanese translation of the manual page of the command line tool 'curl'. (more about this page) curl.1 man ページ 名前 curl - transfer a URL curl - URL 転送 書式 curl [options] [URL...] 説明 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). The command is designed to work without use
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く