タグ

スクリプトとlinuxに関するrichard_rawのブックマーク (17)

  • POSIX 準拠のシェルスクリプトでは find | xargs よりも find -exec {} + を使うべき! - Qiita

    POSIX 準拠のシェルスクリプトでは find | xargs よりも find -exec {} + を使うべき!ShellScriptBashshellPOSIX はじめに find の出力を xargs にパイプで渡すというのはよく見かける使い方ですが、find -print0 | xargs -0 が使えない POSIX 準拠のシェルスクリプトでは find -exec {} + を使った方が良いです。安全かつ十分に速いからです。よく見かける -exec {} ; ではなく -exec {} + ですので間違えないようにしてください。多くのケースでは + の方が優れているのですが ; ばっかり使われているのを見ると、意外と知られてない気がします。 少しだけ予備知識として、-exec {} ; は -exec {} \; と ; をバックスラッシュでエスケープするのがよく見る使い方

    POSIX 準拠のシェルスクリプトでは find | xargs よりも find -exec {} + を使うべき! - Qiita
    richard_raw
    richard_raw 2021/09/14
    私は1999年で知識が止まってました。";"と"+"でそんなにパフォーマンスが違うとは……。というか"-print0"はPOSIX標準じゃなかったのか。/(追記)「;」は単体実行で「+」はグループ実行。
  • インストール不要!WindowsでLinuxコマンドを使う - Qiita

    (2018/11/17更新) 記事公開から3年経過し、WindowsにおけるLinuxコマンドの扱いについて取り巻く環境が変化してきたため内容をアップデートしました。合わせてWindows上でシェルスクリプトを実行するためのTipsも追加。 前置き Linuxなどの環境を使いはじめて慣れてくると、シェルや各種Unix系コマンドの使いやすさが手放せなくなってきます。そんなときにWindowsでデータの編集や解析などを行おうとすると、大変不便に感じてしまいます。 Windowsにも元々コマンドプロンプトや、PowerShellといった環境はあります。しかしこれらを駆使してLinuxと同等のことがしたい、と思ったものの挫折した経験を持たれている方は少なくないのではないでしょうか。(私の場合は、コマンドプロンプトやバッチファイルの貧弱さではどうしようもなく。PowerShellは学習コストが高そう

    インストール不要!WindowsでLinuxコマンドを使う - Qiita
    richard_raw
    richard_raw 2019/03/28
    busybox.exe を使えばバッチファイルの中でシェルスクリプトが書ける!まだwindows 7環境なので助かります。
  • GNOMEのファイルマネージャーで任意のVBScriptコードを実行可能なバグ「Bad Taste」 | スラド オープンソース

    GNOMEのファイルマネージャー「GNOME File (Nautilus)」で任意のVBScriptコードを実行可能な脆弱性「Bad Taste」が発見された(発見者による解説記事、 The Registerの記事、 Neowinの記事、 Bleeping Computerの記事、 CVE-2017-11421)。 問題はWindowsの実行ファイル(.exe)やWindowsインストーラーパッケージ(MSIファイル: .msi)などのアイコンをGNOME File上で表示するために使われる「gnome-exe-thumbnailer」のバージョン0.9.4-2以前に存在し、Wineがインストールされた環境で再現する。また、GNOME Fileのほか、「Cinnamon Nemo」や「MATE caja」といったファイルマネージャーも影響を受けるとのこと。 バージョン0.9.4-2までの

    GNOMEのファイルマネージャーで任意のVBScriptコードを実行可能なバグ「Bad Taste」 | スラド オープンソース
    richard_raw
    richard_raw 2017/07/24
    MSIファイルのサムネイル画像生成で。
  • シェルスクリプトの中で1行ずつ変数を分割する際には、cutとかawkとか余計なプロセスを起動せずsetを使って分割した方が効率的 - 双六工場日誌

    シェルスクリプトの中で、スペース区切りもしくはタブ区切りのレコードを扱うことがよくあると思います。 たとえば、前回のエントリ「AWS CLIとjqを使って、AWSのELBボリュームがアタッチされているEC2インスタンス名を出力するワンライナーを書いた - 双六工場日誌」のスクリプトの出力は以下のようになります。 i-ec56a9f5 vol-07d00601 servername i-ec56a9f5 vol-8f550991 servername このようなレコードの特定の列を取り出して、処理する際にどうするのが効率的か、というのがこのエントリのお題です。 非常に古い話題なので、昔からシェルスクリプトを書いている人には自明な話ではありますが、最近、シェルの標準機能の話を聞く機会がなく、失われつつある技術になってきている気がしているので、改めて確認ということで。 例として挙げたレコードから

    シェルスクリプトの中で1行ずつ変数を分割する際には、cutとかawkとか余計なプロセスを起動せずsetを使って分割した方が効率的 - 双六工場日誌
    richard_raw
    richard_raw 2015/01/26
    なるほどsetを使うのか!近頃はbashしか触れてないから配列に入れてましたわ。
  • Steam for Linuxのバグ、予期せぬ「rm -rf "/"*」 | スラド Linux

    Steam for LinuxSteamのデータ保存用ディレクトリを別の場所に移動した結果、ユーザーのファイルがすべて消去されてしまったというバグリポートが出されている(Neowinの記事、 家/.)。 このユーザーは「~/.local/share/steam」フォルダーを別のドライブに移動し、元の場所にシンボリックリンクを張った。その結果Steamが起動しなくなり、新しい場所を指定しても解決せずにSteamはクラッシュ。再起動すると自動的に再インストールが行われ問題は解決したように見えたが、ルートディレクトリ以下すべての場所(マウントされている外付けドライブも含む)から、このユーザーのファイルが再帰的に消去されてしまっていたという。 同様のトラブルに遭遇した他のユーザーが、Steamのスクリプトで見つかった問題点を指摘している。スクリプトはある時点でデータの保存場所を「$STEAMR

    richard_raw
    richard_raw 2015/01/19
    シェルスクリプトあるある。そうか、"rm -rf /"なら止めてくれるけど"rm -rf /*"は展開されるから……。
  • tmuxで複数サーバの同時オペレーション

    インフラ担当の池田(@mikeda)です。 tmuxを使い初めて1年くらいになりました。 今日はtmuxの、普段のオペレーションでよく使ってる機能を紹介します。 複数サーバで同時オペレーション tmuxにはキー入力を全てのpaneで同期する機能があります。 この機能を使って複数paneでそれぞれ別のサーバにsshログインすると、 複数サーバに同じコマンドを打ったり、 内容が同じ設定ファイルであればviで同時編集したりができます。 同期する/しないはコマンドでも切り替えられますが、 set-window-option synchronize-panes on set-window-option synchronize-panes off tmux.confにショートカットを設定しておくと便利です。 bind e setw synchronize-panes on bind E setw sy

    tmuxで複数サーバの同時オペレーション
    richard_raw
    richard_raw 2014/01/11
    使いこなしたいです。
  • デーモンの起動・終了にはserviceコマンドを利用しよう

    斎藤です。こんにちは。 今日は、デーモンの起動・終了に際してはserviceコマンドを使った方がいいよ、というお話です。 ※CentOS 6.4 (x86_64) でテストしています。尚、特記がある所を除きます。 デーモンの起動・終了には大きく2手 Linux、特にRedHat, CentOS, Fedora, Ubuntu[1]などでは、デーモンの起動・終了の制御の際に、大きく分けて次の2つの方法を用いる事ができます。 "/etc/init.d/"配下のスクリプト(以下、スクリプト)を直接実行する "service"コマンドを実行する 一見、同じ事をやっているように思えるのですが、実は違う部分があります。それは、起動スクリプトが扱う環境変数が違うのです。次の節で、検証してみます。 扱う環境変数が違う スクリプトを直接実行する場合は、実行時の際の環境変数をそのまま利用します。一方、serv

    richard_raw
    richard_raw 2013/06/26
    init.d以下を直接実行するのはやめようということですね。OSごとに違うし……。
  • 第37回  「らじる☆らじる」再び | gihyo.jp

    日中はまだまだ厳しい残暑が続き、行く夏を惜しむかのように蝉たちが頑張っているものの、朝晩はめっきりと涼しくなって秋の虫たちの合唱も聞こえるようになりました。熱帯夜が続く間は手を付ける気力が出なかった作業にも、少しずつ手を出せるようになってきました。 そのような作業の際の便利なBGMに、昨秋よりNHKがやっているネットラジオ「らじる☆らじる」があります。Linuxで「らじる☆らじる」を聞いたり録音したりする方法については、この連載でも以前取りあげたことがあります。その際は基となるシェルスクリプトしか解説できませんでしたが、記事の中で紹介したPlamo Linuxのサイトではそれら録音用のシェルスクリプトを生成するためのPythonスクリプトも紹介しておきました。 手元では、このPythonスクリプトを使っていろいろな番組を録音して楽しんでいましたが、予約したい番組が増えるにつれ、スクリプト

    第37回  「らじる☆らじる」再び | gihyo.jp
    richard_raw
    richard_raw 2013/04/02
    というか、argparseが便利そうです。
  • /bin/sh と /bin/bash の違い - 双六工場日誌

    みなさん、shebang書いてますか! Shebangというのは、スクリプトの最初の一行目に書く、「#!/bin/sh」とか「#!/usr/bin/perl」とかそういうあれです。詳しくはWikipediaさん(シバン (Unix))に聞いてくださいまし。 Twitter見てると、「そもそもこれにshebangなんて名前がついてるの知らなかったよ」という発言も見る不憫な子ではあるのですが、そこに何が書いてあるかで実は動作が違うよってのが今日の題です。それで、はまっていたのを最近見て、まああまりここで引っかかる人はいないと思いつつ、この点を書いた情報を見ないのでまとめてみました。*1 今日取り上げるのは、bashがデフォルト設定になっているLinuxでの「#!/bin/sh」と「#!/bin/bash」のお話。確認はCentOS5, 6で行なっています。 さて、上記の環境の場合、「/bin

    /bin/sh と /bin/bash の違い - 双六工場日誌
    richard_raw
    richard_raw 2012/08/07
    linuxでも動作が違うんですね。っていうかshebang知りませんでした。
  • 使えるとちょっと便利なSSHのTIPS

    こんにちは、牧野です。久々の、9か月以上ぶりのブログです。。 仕事では、ここ1年近くずっっとインフラ関係のことをやっていました。 今日は、SSHに関するTIPSを紹介します。 1. 特定のサーバーにSSHログインする時に、特定の設定を使用する ホームディレクトリ/.ssh/configファイルに設定を書いておくと、特定のサーバーにログインする時に、自動的に特定の設定を使うようにできます。 SSHのオプションをサーバーによって分けたい時に入力が楽になります。 以下は、xxx.yyy.zzz.aaaでアクセスする時に使う秘密鍵をid_rsa_testに設定しています。 .ssh/config Host xxx.yyy.zzz.aaa IdentityFile /home/asial/.ssh/id_rsa_test 2. ホストキーをチェックしないようにする LinuxからサーバーにSSH接続

    使えるとちょっと便利なSSHのTIPS
    richard_raw
    richard_raw 2012/04/18
    1, 3を参考にします。
  • GNU Parallelがすごすぎて生きるのがつらい

    皆さん今日もたくさんのサーバを相手にされていることかと思いますが、いくつかのサーバにアクセスして 1 秒間の統計情報(例えばvmstat 1 2)を集めてパッと表示したい時ってどうやってますかね?shell script を学びはじめたばっかりの僕はこんな感じで書いてました。 $ for i in host1 host2 host3; do ssh $i "vmstat 1 2 | tail -1"; done 0 0 0 329004 210836 14275360 0 0 0 2424 1410 1828 0 0 100 0 0 0 0 0 3716112 587704 25921684 0 0 0 488 1643 2026 0 0 100 0 0 1 0 0 555440 265560 14015548 0 0 0 4204 1534 2392 1 0 99 0 0 vmstatと

    GNU Parallelがすごすぎて生きるのがつらい
    richard_raw
    richard_raw 2011/04/20
    並列処理のためのPerlスクリプト。ちょっと触ってみようかしら。
  • 【レビュー】Ubuntu 10.10をMac OS X Snow Leopardのように見せる方法 | エンタープライズ | マイコミジャーナル

    Ubuntu is a community developed operating system that is perfect for laptops, desktops and servers. 開発から事務作業、ホビーまでさまざまな要望に答えてくれるUbuntu。半年おきのリリースごとに確実に改善を続けており、ユーザを魅了し続けている。提供されているパッケージも多岐にわたっており、Ubuntuを用意しておけばほしい作業のほとんどはなんとかなるという状況だ。 UbuntuといえばそのUIが特徴的だが、このUIは変更することができる。ランチャーを利用すればほかのOSのように魅せることもできる。しかし、個別にUI変更のアプリケーションを探してきたり、テーマをインストールするのは面倒な作業でもある。そうした場合に使えるテクニックがTransform Ubuntu into Mac - Tra

    richard_raw
    richard_raw 2010/10/20
    シェルスクリプトを実行するだけ!手軽になったなあ。
  • 【レビュー】UbuntuでプロセスのCPU利用率を指定した値に制限する方法 | エンタープライズ | マイコミジャーナル

    Make Tech Easier - Uncomplicating the complicated, making life easier 数値計算やデータ変換、特定のコンパイル作業など、CPU負荷の高いタイプのアプリケーションやユーティリティを動作させておくと、システム全体の反応が緩慢になることがある。マルチコアでは気にならないことも多いが、シングルコアでは単一のプロセスが原因でユーザインタラクションが緩慢になり、使えたものではない状況になることがある。 こうした場合に利用できるツールcpulimitがHow to Limit The CPU Usage of Any Process in Linux - Make Tech Easierで紹介されている。Linux向けのツールで、特定のプロセスのCPUの使用率を設定した値まで制限するというもの。簡単に扱えるツールとして参考になる。Ubu

    richard_raw
    richard_raw 2010/09/29
    cpulimit(1)ですって。
  • Linux でシステムの起動時に 1 度だけ処理を実行する。 - D.

    システムの起動時に一度だけ実行する処理は、普通は /etc/rc.local に書くわけだが 、1 ファイルにすべてを書いてしまうと管理が煩雑になったりする。まとまった処理ごとにファイルを分けておいたほうが管理が楽だ。 そこで /etc/rc.local の内容を以下の通りにする。 #!/bin/sh if [ -d /etc/rc.local.d ]; then for i in /etc/rc.local.d/*; do if [ -r $i ]; then . $i fi done unset i fi exit 0 /etc/rc.local.d というディレクトリを用意する。ここにシェルスクリプトの書かれたテキストファイルを入れておくと上のスクリプトによってすべて実行されることになる。ファイル名は何でも良い。 イー・モバイル端末が体に接続されていれば接続する例 (ネットブック等

    Linux でシステムの起動時に 1 度だけ処理を実行する。 - D.
    richard_raw
    richard_raw 2010/09/24
    /etc/rc.local.d/以下。っていうか@rebootを知らなかったです。
  • シェルスクリプトに香辛料 | スラド ハードウェア

    GUI のアプリケーション開発は時間とお金がかかる。Unix 系のスクリプトは CLI ベースで走るきわめて洗練されたプログラミング言語だ。設計は簡単ですぐに作れるが Unix コマンド同様ユーザフレンドリーというわけではない。Linux / Unix で走る bash は、対話式で使いやすいグラフィカルなインターフェイスで実行できるスクリプトを書くツールを提供している。このようなピリリとした趣を与える香辛料として、Linux / Unix プラットフォームでどんなツールを使ってますか? タレコミ人がリンク先で紹介されている tput と zenity コマンドを RHEL で試したところサンプルどおりに動作した。自分で使う分には CUI で十分なのだが、自作スクリプトをオペレータに依頼して実行してもらうような際にはこのような GUI も有効かもしれない。

    richard_raw
    richard_raw 2010/04/21
    bashからnotifyとか。
  • ウノウラボ Unoh Labs: シェル(bash)スクリプトを書くときのTips

    尾藤正人(a.k.a BTO)です UNIXを使う時にはシェルスクリプトをよく使います。 ちょっとしたコマンドを実行するには、シェルスクリプトは非常に便利です。 今回はシェルスクリプトを書くときに覚えておいた方が便利なTipsを紹介します。 非互換性 ここで紹介するものは基的にbashで動作するものになります。 伝統的なBourne Shellでは動作しないことが多くあると思います。 しかしながら最近はbashがメインで使われることが多いので、"だいだいの環境で動くからおk"ぐらいのノリで使ってもらえればと思います。 $(...) コマンドを"$(", ")"で囲むと実行結果をコマンドラインに代入してくれます。 一見これは"`"(バッククオート)と同じに見えますが、"$()"にはネストができるという利点があります。 例えばシェルスクリプト自身の絶対パスを取得するのは次のようにで

    richard_raw
    richard_raw 2008/09/02
    "$(...)" はネストできるとな。
  • Loading...

  • 1