課題 解決策 対策概要 発生状況 対策詳細 所感 注意 参考 課題 subprocessモジュールを利用して外部のシェルスクリプトを起動することがある。そのシェルスクリプトにおいて子プロセス(バックグラウンドプロセスなど)が動作している最中に、subprocessで設定したtimeoutが発生した。このとき、直接起動したシェルスクリプトのプロセスはkillされるが、その子プロセスは残存しているようだ。timeoutが発生した際には子プロセスも含めてkillしたいがどうすればよいか。 解決策 対策概要 起動するプロセスを別のセッションとして管理し、python の timeout 例外 catch において、プロセスグループ ID に対してkill する。 発生状況 最初に「課題」の状況が発生する様子を示す。以下のようなスクリプトを用意した。シェルスクリプトでは(subprocessで設定し
はじめに Web アプリケーションを開発する際、バックエンドの API サーバーやデータベースなどの複数のマシン環境を1台の PC で動かすことの可能なコンテナツールとして、Docker は広く利用されています。 この便利な Dockerですが、複数人で Web アプリケーションを開発しているチームで各メンバの開発用 PC の OS が異なる状態(例えば、A さんが Windows、B さんが macOS など)で、Docker をローカル環境に直接インストールしていた場合、下記のような不都合が発生します。 Docker のバージョンがメンバ間で統一されていない 😱 コンテナ外で使用必須のツールのインストール方法・バージョンがメンバ間で異なる 😱 コンテナ外で使用必須のシェルスクリプトは OS 毎で(または OS の差異を考慮して)作成する必要がある 😱 以上の問題は、Docker
Ubuntu で有名な Canonical 社が OSS として提供する仮想マシン管理ツール「Multipass」を利用して macOS 上で Docker 環境を構築してみた はじめに アノテーション テクニカルサポートチームの 川崎 です。 現在私は、クラスメソッド グループ、アノテーション株式会社で AWS のテクニカルサポートと、新卒メンバー向けの育成に携わっています。 チームメンバーがローカルのmacOS上で自由に開発できるDocker環境を探していたところ、「Multipass」という最適なツールを見つけましたので、ブログで共有します。 以前はDocker Desktopが無料で利用できましたが、一部有料化されたため、代替ソフトウェアを探していました。Multipass は OSS として提供されており、マルチプラットフォーム対応で、macOS、Windows、Linux で使
straceはユーザーランドアプリケーションの挙動の確認やデバッグに使える便利なツールです。どのシステムコールが、どのような引数で呼び出され、その結果どうなったのかをログとして残せます。不可解な挙動をするプログラムを調べる上で覚えておくと損はないツールです。今回はstraceの基本的な使い方に加えて、わざとシステムコールをエラー終了させる、エラーインジェクションについても紹介しましょう。 不可解なプログラムについて この世にあるソフトウェアはすべて何らかの不具合を抱えています。もし不具合のないソフトウェアが存在するとしたら、その事実自体が不具合と言えるかもしれません。そのまま放置しておくと、きっと将来なにがしかの不具合が顕現することでしょう。よってソフトウェアエンジニアと呼ばれる人たちは、日々ソフトウェア様のご機嫌を伺い、こびりついた不具合を削ぎ落とし、場合によってはあえて不具合を埋め込み
コンピュータは便利ですが,それでも手間のかかる作業は多々あります。とくにGUI(グラフィカルユーザーインターフェース)のソフトウェアで次のような作業をやらないといけないとしたら,面倒そうだと思いませんか? 複数のファイルのファイル名を一括で変更する 大量の画像ファイルの中から全く同じ画像のファイルを探す 複数のファイルに記録されている数ヵ月にわたるログから特定の期間の情報だけを抽出する これらの作業をするには,ファイラー(Windowsのエクスプローラーなど)やエディタだけでは限界があります。専用ソフトをいくつか使ったり,単純な手作業を繰り返したりして作業することになります。 その点,シェルやスクリプト言語を使えば細かな条件をプログラミングすればどんな作業でも片付けられます。また,ターミナルのCLI(コマンドラインインターフェース)上では,コードを書いてそのまま実行できるため,たいへんお手
Twitter で「読みたい」と呟いたら著者の武内覚さんから献本しましょうかとお声を掛けて頂いたので即答でお願いしました。 僕はいつも Linux でしか動作しないソフトウェアを Windows に対応させるパッチを書いたりしているので、普段 Windows しか触っていないと思われがちですが、実は僕が Linux を触り始めたのは 1996 年にトッパンから出版された「Linux 入門」くらい昔だったりします。ちょうど Linux 2.0 が出た頃だったと思います。その頃の Linux はようやく SMB カーネルが出た頃で、まだまだお遊び感のある OS で不安定でもありました。ディストリビューションもほぼ Slackware くらいしか無かったかもしれません。 あの頃の Linux はインターネットを検索しても殆ど情報が出て来ず、本気で調べるにはソースコードを読むしかありませんでした。
日常から使えるUnix系OS業務効率up技 気分転換に、普段からLinuxで作業する上で割と便利なツールだったり小技を共有します。知ってたらごめんね 一応全部MacでもLinuxでも動くはずです。 高速化系 axel , aria2c http://qiita.com/sarumonera/items/2b30999d7d41a4747d74 https://goo.gl/gsFrCT https://wiki.archlinuxjp.org/index.php/Aria2 http://qiita.com/TokyoMickey/items/cb51805a19dcee416151 こいつらは割と有名(?)かなと思います。やってることはcurlやwgetとほとんど変わらず、サーバにHTTPリクエストを送ってレスポンスを取ってくるだけなのですが、ダウンロードを高速化するためにtcpコネクシ
複数の接続元からSSH接続をさせたい、かつそのうち1つのユーザーは動的IPアドレスから接続させなければならない、という要件はよくある話です。こうしたユーザーのためにSSHで使用するTCP/22番ポートをフルオープンにするのは躊躇われるかと思いますので、こんな仕組みを考えてみました。 ユーザー「hamada」は固定IPアドレスからTCP/22へssh接続させる ユーザー「nullpopopo」は動的IPアドレスからTCP/12345へssh接続させる 下記手順を行う前に、あらかじめ hamada ユーザーと nullpopopo ユーザーを useradd コマンドで作成しておいてください。 Ansible徹底入門 クラウド時代の新しい構成管理の実現 ■ sshd_config 設定変更 まず、 /etc/ssh/sshd_config で 22番ポートのほかに12345番ポートでsshdを
URLクエリーパラメーターに、URLエンコード・デコードした文字列を指定する時、いちいち「変換便利サイト」や「PHPスクリプト」で変換するのは些か面倒です。Linuxユーザーであれば、普段開いている端末(コンソール)で変換したいのでその方法を調べました。(2014/11/09作成) Anna86 / Pixabay nkfとは nkf はネットワークでメールやニュースの読み書きをするために作られた、漢字コードの変換フィルタである。このnkfの特徴としては、入力漢字コード系の統計的な自動認識機能がある。このため、利用者は、入力漢字コード系が何であるかを知らなくても、出力漢字コード系のみ指定すれば良いことになる。ただ、この判定機構は、理論的には完全ではないが、通常のニュースやメールのメッセージについては確実に動作する安全なものにはなっている。 0. 環境情報 $ rpm -qa | grep
この記事は公開されてから半年以上経過しています。情報が古い可能性がありますので、ご注意ください。 こんにちは。iriharaです。 今回は、RHEL7/CentOS7の管理系のコマンドについて確認してみましたので、 皆さんよろしければ、参考にして下さい。 以前に、RHEL7について紹介させてい頂いた際に、ifconfigコマンドやnetstatコマンドなどは、 今後別のコマンドに切り替わる旨を紹介させて頂きましたが、今回は、netstatコマンドに 取って代わる事になる予定のssコマンドについて紹介させて頂きます。 …と、思った矢先に、色々と確認したところ、ssコマンドについては、現行のバージョン (iproute-3.10.0)にバグがあることが判明してしまいました。 (Red hat社でも認識されているようです。) <a href="https://bugzilla.redhat.co
LinuxでI/Oと格闘していると、重要なファイルがどのタイミングでキャッシュに乗ってくるかは死活問題になります。 このファイルってどれくらいキャッシュに乗っているの?という時に便利な vmtouch というツールがあったのでご紹介。 導入方法 導入はいたって簡単。 $ git clone https://github.com/hoytech/vmtouch.git $ cd vmtouch $ make $ sudo make install ちょっと調査で使いたいだけなら make install はやらなくてもOKです。インストールした場合は /usr/local/bin に実行ファイルがインストールされてmanも利用できるようになります。 基本的な使い方 まずは動作の確認に使うファイルを作成します。90000行です。 $ for n in `seq 10000 99999`;do
B! 44 0 2 0 ターミナルでドキュメントを開く手軽なコマンドのlessですが、 小さなものならcatで良かったり、 サイズがそこまで大きく無ければvim等のエディタで開いてみてしまったりすることが多いです。 というのもlessの機能を余り知らないのでvimなどで見た方が色々と便利だったりするので。 しかしlessも実は結構高機能で便利だったりするので知っていると 使えることも結構あります。 その辺の一歩踏み込んだlessの使い方について。 less オプションのプレセット指定 表示中にオプションを切り替える シンタックスハイライト(source-hilight、ついでにlesspipe.shについて) 途中からエディタで開く 複数のファイルを扱う tail -fの代わりに使う less lessはMark Nudelman氏によって書かれたもので、今は GNU Projectの一つ
ふとtwitterみてたら、rsコマンドなるものを使って処理しているものがあったので、ちょっと調べつつ使ってみることにした。 どうやらBSDで使われていたデータ処理のコマンドのようで、ちょっとしたバグはあるようだけど、いろんな使い道があるようだ。日本語のmanはこちら。 一応Mac OS Xには最初から、Ubuntuには以下のコマンドでインストールすることができる。 sudo apt-get install rs 以下、いくつかの使い方をピックアップする。 1.複数の列に分割する 以前にこちらでも触れたのだが、pasteのように標準出力で受けた列を、複数の列に分割させることができる。 コマンド | rs 行数(0の場合無制限) 列数 # pasteと同じ方向で処理をする コマンド | rs -t 行数(0の場合無制限) 列数 # pasteの逆の方向で処理をする blacknon@BS-P
sed って足し算くらいできるんじゃないかと思ったので作ってみました。 http://shinh.skr.jp/koneta/add.sed i@um ~> echo 1 1 | ./add.sed 2 i@um ~> echo 999 999 | ./add.sed 1998 i@um ~> echo 12345 54321 | ./add.sed 66666ICFPC のクソ(誉)言語どもに比べれば sed はマシなんじゃという疑念が… と、このあたりで 神々の偉業 のすさまじさ(っていうかfor知らずにgotoとifだけでコード書いちゃうような若気の至りとかを感じる側面はあるんだけど)がわかってきたので良かった。偉くなるのは無理でも、偉い人の偉さは知りたいよねみたいな。
Bash on Windowsが強化、Linux版のJavaやGo、PostgreSQLなどもWindowsで実行可能に。3月リリースのWindows 10 Creators Updateで マイクロソフトは来月(2017年3月)登場予定のWindows 10の大型アップデート「Windows 10 Creators Update」で、Windowsに取り込んだLinux機能の「Bash on Ubuntu on Windows」とその背後にある「Windows Subsystem for Linux」(以下、両者をまとめて「Bash on Windows」に省略)の強化を行い、これまで実行が困難だったLinux版のJavaやPostgreSQLなども実行可能になることを、2月8日(日本時間2月9日未明)のイベント「Windows Developer Day - Creators Upda
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く