Unix & Linux

Linux、FreeBSDおよび他のUn * xのようなオペレーティングシステムのユーザーのためのQ&A




7
サービスがスクリプトで実行されているかどうかをテストする「適切な」方法
私の問題: 私はbashスクリプトを書いていますが、その中で特定のサービスが実行されているかどうかを確認したいと思います。 私はこれを手動で行う方法を知っています$ service [service_name] status。 しかし、(特にsystemdへの移行以来)解析するのが少し面倒なテキスト全体を印刷します。単純な出力または確認できる戻り値を持つスクリプト用に作成されたコマンドがあると想定しました。 しかし、グーグルで動き回っても「ああ、ただps aux | grep -v grep | grep [service_name]」という結果しか得られません。それはベストプラクティスとは言えませんね。そのコマンドの別のインスタンスが実行されていて、SysV initスクリプトによって開始されたものではない場合はどうなりますか? それとも、黙って小さなpgrepで手を汚すべきですか?

5
「関数foo(){}」と「foo(){}」の違い
キーワードbashを使用または省略して、関数を定義できますfunction。違いはありますか? #!/bin/bash function foo() { echo "foo" } bar() { echo "bar" } foo bar 関数の呼び出しfooとbar成功の両方で、違いは見当たりません。だから、読みやすさを改善するだけなのか、それとも私が見逃しているものがあるのか​​疑問に思っています... BTW dash(debian / ubuntuに/bin/shシンボリックリンクさdashれています)などの他のシェルでは、functionキーワードを使用すると失敗します。
96 bash  shell  function  posix 

2
ポート80でPython SimpleHTTPServerを起動するにはどうすればよいですか?
私はUbuntuでこのコマンドを使用していますが、ポート8080で開始していますが、別のサーバーを実行していないので、ポート80で開始したいと思います。bashスクリプトを設定して、これはありますが、コマンドラインフラグやポートを指定する簡単なものはありませんか? python -m SimpleHTTPServer

5
bashの履歴はどこに保存されますか?
を実行するhistoryと、最新の実行コマンドが表示されます。 しかし、私がやったtail -f $HISTFILE場合tail -f ~/.bash_history、それらはリストされません。 ファイルはロックされますか、一時的な場所などがありますか?


7
新しいプロセスを作成するために分岐する必要があるのはなぜですか?
Unixでは、新しいプロセスを作成するたびに、現在のプロセスを分岐し、親プロセスとまったく同じ新しい子プロセスを作成します。次に、execシステムコールを実行して、親プロセスのすべてのデータを新しいプロセスのデータに置き換えます。 なぜ最初に親プロセスのコピーを作成し、新しいプロセスを直接作成しないのですか?


7
grep、awk、sedの基本的なチュートリアルはありますか?[閉まっている]
私はしばらくの間Linuxユーザーであり、ほとんどの一般的なコマンドラインユーティリティをかなりよく理解しています。しかし、プログラミングに関連して、再び起動して出てくるものがありgrep、awkとsed。 私がgrepを使用した唯一のことは、ログファイル内のファイル、出力psなどを見つけるためにパイプを使用することです。私は使用していないawkかsed、まったく使用していません。これらのユーティリティの良いチュートリアルはありますか?
95 grep  sed  awk 

4
実行しているDebianのバージョンを知るにはどうすればよいですか?
チュートリアルでは、「Squeezeを実行している場合は、これらの指示に従ってください...」および「Wheezyを実行している場合は、これらの他の指示に従ってください...」 を実行するunameと、次の情報が得られます。 Linux dragon-debian 3.2.0-4-686-pae #1 SMP Debian 3.2.63-2+deb7u2 i686 GNU/Linux その情報は、私がSqueezeを使用しているかWheezyを使用しているかを知るのに十分ですか、それとも他のどこからでも入手できますか?
95 debian  version 

2
gpg:鍵サーバーの受信に失敗しました:dirmngrなし
Debian Stretchサーバーでキーを受信しようとすると、次のエラーが表示されます。 sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF Executing: /tmp/apt-key-gpghome.4B7hWtn7Rm/gpg.1.sh --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF gpg: failed to start the dirmngr '/usr/bin/dirmngr': No such file or directory gpg: connecting dirmngr at '/tmp/apt-key-gpghome.4B7hWtn7Rm/S.dirmngr' failed: No such file or directory gpg: keyserver receive failed: No dirmngr
94 debian  apt  gpg 

2
デフォルトでgrepがバイナリファイルを無視しないのはなぜですか?
のマンページでgrepは、-Iフラグについて次のように説明しています。 -I Ignore binary files. This option is equivalent to --binary-file=without-match option. また、バイナリファイルについても次のように述べています。 --binary-files=value Controls searching and printing of binary files. Options are binary, the default: search binary files but do not print them; without-match: do not search binary files; and text: treat all files as text. バイナリファイルの一致を気にするシナリオは考えられません。そのようなシナリオが存在する場合、それは通常ではなく例外でなければなりません。grepこのフラグを設定する必要がなく、デフォルトでバイナリファイルを無視しないのはなぜですか?
94 grep 

2
括弧は本当にコマンドをサブシェルに入れますか?
私が読んだことから、コマンドを括弧で囲むと、スクリプトを実行するのと同様に、サブシェルで実行されるはずです。これが当てはまる場合、xがエクスポートされていない場合、変数xはどのように見えますか? x=1 (echo $x)コマンドラインで実行すると1になります echo $x期待どおり、スクリプトで実行しても何も起こりません

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.