Unix & Linux

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

2
tail --follow = name(-F)のような機能はありません
このコマンドlessを使用してtail、 tail -f file バイナリ出力の処理やスクロールバックのナビゲートなどの機能を提供するには: less +F file +接頭手段は、「私は、起動後にそのタイプふり」、およびキーF開始し、次の。 しかしless、置き換えることもできます tail --follow=name file にfile移動したログファイルのように、実際のファイルが削除または移動された場合でも、次のようfile.log.1になります。その後、後続のファイルと同じ名前の新しいファイルが作成されます。
41 tail  less  pager 

3
awk配列内のすべてのコンテンツを表示する方法は?
私の理解では、awk配列はpython dictのようなものです。 そこで、以下のコードを書き留めて調べてみます。 awk '{my_dict[$1] = $2} END { print my_dict}' zen そして私は得た: awk: can't read value of my_dict; it's an array name. 最初の列は数字ではないので、配列の内容全体をどのように読み取ることができますか?
41 awk 

3
dpkgはPATH変数でldconfig / start-stop-daemonを見つけることができません
bsd-mailxパッケージがインストールされたユーティリティをインストールしようとしましたが、エラーについて疑問に思っています。 これは私が得るエラーです: Preconfiguring packages ... dpkg: warning: 'ldconfig' not found in PATH or not executable. dpkg: warning: 'start-stop-daemon' not found in PATH or not executable. dpkg: error: 2 expected programs not found in PATH or not executable. Note: root's PATH should usually contain /usr/local/sbin, /usr/sbin and /sbin. E: Sub-process /usr/bin/dpkg …
41 ubuntu  apt  dpkg  mailx 

3
リバーストンネルを作成するための永続的なバックグラウンドssh接続:正しい方法は何ですか?
関連質問:サーバーからクライアントへのSSH接続を開始する そこからの回答は私を大いに助けました、このコマンドは私が必要なことをします: ssh -R 2225:localhost:22 loginOfServerWithPublicIP@publicIP そこで、常に再接続するスクリプトを作成しました。 #!/bin/bash while true; do echo "try to connect..." ssh -o ServerAliveInterval=240 -R 2225:localhost:22 user@host echo "restarting in 5 seconds.." sleep 5 done に追加しました/etc/crontab。しかし、シェルから「手動」で実行するだけで機能することがわかりましたが、cronから呼び出された場合、sshは接続してすぐに終了します。(したがって、上記のスクリプトは常に再接続します) からman ssh、バックグラウンド接続では-nキーで呼び出す必要があることがわかりましたが、助けにはなりませんでした。次に、同様のスクリプトを探してみたところ、を呼び出すと機能することがわかりましたtail -f something。つまり、「ネバーエンディング」コマンドなので、空のファイル/tmp/dummy_fileを作成したところ、sshコマンドは次のようになります。 ssh -o ServerAliveInterval=240 -R 2225:localhost:22 -n user@host tail -f /tmp/dummy_file 今すぐ動作します!しかし、この解決策は少しいように思えますが、実際にその動作の実際の理由はわかりません。偶然に、私bashはtail -f(代わりにbash「永遠に」コマンドでもないように思える)の代わりに電話をかけようとしましたが、うまくいきません。 だから、誰もこの動作を説明してもらえますか?バックグラウンドssh接続を作成してリバースsshトンネルを維持する正しい方法は何ですか?

3
コマンドとしての変数; eval vs bash -c
私が作っbashスクリプトの誰かに読んでいたし、私は著者がコマンドとして変数を評価するためにevalを使用していないことに気づいた 著者が使用します bash -c "$1" の代わりに eval "$1" evalを使用することが推奨される方法であり、おそらくいずれにせよ高速であると思います。本当? 2つの間に実際的な違いはありますか?両者の顕著な違いは何ですか?


9
CentOS 6.4でredisを作成するjemallocおよびその他のエラー
redisを備えた新しい専用のCentos 6.4システムをセットアップしています。私は何度もredisをインストールしましたが、この問題に遭遇したことはありません(かつてcentos 6.4に参加したことはありません)。 cd redis-2.6.16 sudo make install エラー: MAKE jemalloc cd jemalloc && ./configure --with-lg-quantum=3 --with-jemalloc-prefix=je_ --enable-cc-silence CFLAGS="-std=gnu99 -Wall -pipe -g3 -O3 -funroll-loops " LDFLAGS="" /bin/sh: ./configure: Permission denied make[2]: *** [jemalloc] Error 126 make[2]: Leaving directory `/tmp/redis32/redis-3.2.6/deps' make[1]: [persist-settings] Error 2 (ignored) sh: ./mkreleasehdr.sh: Permission denied and later: …
41 centos  make 

4
キーパスフレーズにグラフィカルプロンプトを使用するようにSSHに指示する
端末を使用する標準プロンプトの代わりにグラフィカルプロンプト(GTKなど)を使用してパスフレーズを要求するようにSSHを強制するにはどうすればよいですか? 設定SSH_ASKPASS=/usr/bin/ssh-askpassしてみましたが、効果はないようです。 問題は、opensshのドキュメントに記載されている事実です sshに端末が関連付けられていないが、 DISPLAYとSSH_ASKPASSが設定されている場合、SSH_ASKPASSで指定されたプログラムを実行し、X11ウィンドウを開いてパスフレーズを読み取ります。 コマンドラインから起動sshは、結果として、私の場合にはgit push、なりますので、それに対応する端末を持っているSSH_ASKPASSロジックを無視しているようです。 私が言及しているのssh-addではなく、鍵ペアが存在するがパスフレーズによって保護されているホストに対する一般的なssh呼び出しに言及していることに注意してください。
41 ssh 

7
sed -i(インプレース編集)で移植性を実現するにはどうすればよいですか?
FreeBSDを実行している共有ホスティングであるサーバー用のシェルスクリプトを書いています。また、Linuxを実行しているPCでローカルにテストできるようにしたいと考えています。したがって、私はそれらを移植可能な方法で記述しようとしていますが、それsedを行う方法はありません。 私のウェブサイトの一部は生成された静的HTMLファイルを使用し、このsed行は各再生成の後に正しいDOCTYPEを挿入します: sed -i '1s/^/<!DOCTYPE html> \n/' ${file_name.html} sedLinux上のGNU で動作しますが、FreeBSD sedは-iオプションの後の最初の引数がバックアップコピーの拡張であると想定しています。これは次のようになります。 sed -i '' '1s/^/<!DOCTYPE html> \n/' ${file_name.html} しかし、GNUはsed順番に式が直後に続くことを期待します-i。(改行処理の修正も必要ですが、それはここですでに回答されています) もちろん、スクリプトのサーバーコピーにこの変更を含めることもできますが、バージョン管理にVCSを使用することは混乱します。完全に移植可能な方法でsedでこれを達成する方法はありますか?

4
巨大なファイルをコピーせずに互いに追加する
それぞれ約10Gの5つの巨大なファイル(file1、file2、.. file5)があり、ディスク上に非常に低い空き領域が残っているため、これらすべてのファイルを1つに連結する必要があります。元のファイルを保持する必要はなく、最後のファイルのみを保持します。 いつもの連結は一緒に行くされcatたファイルの順序でfile2.. file5: cat file2 >> file1 ; rm file2 残念ながら、この方法では、少なくとも10Gの空きスペースが必要です。実際にコピーせずにファイルを連結する方法はありますが、ファイルシステムに、file1が元のfile1の終わりで終了せず、file2の開始で続行することを何とか伝えますか? 追伸 重要な場合、ファイルシステムはext4です。


1
プロセスの開いているファイルをリアルタイムで監視するにはどうすればよいですか?
Linuxマシンlsof でその時点で使用しているプロセスの開いているファイルを表示できることを知っています。ただし、プロセスはファイルを非常に迅速に開いたり、変更したり閉じたりすることができるためwatch、「Linuxで開いているプロセスファイルを監視する(リアルタイム)」で説明されているように、標準のシェルスクリプト(たとえば)を使用して監視すると表示できません。 だから、私はプロセスを監査する簡単な方法を探していて、それが時間の経過とともに何をしてきたかを見ると思います。監査を開始せずにプロセスを実行する時間をとる前に、どのネットワーク接続(試行)が行われたかを確認し、監査を開始できるようにすることもできれば素晴らしいことです。 理想的には、私はこれをしたいと思います: sh $ audit-lsof /path/to/executable 4530.848254 OPEN read /etc/myconfig 4530.848260 OPEN write /var/log/mylog.log 4540.345986 OPEN read /home/gert/.ssh/id_rsa <-- suspicious 4540.650345 OPEN socket TCP ::1:34895 -> 1.2.3.4:80 | [...] 4541.023485 CLOSE /home/gert/.ssh/id_rsa <-- would have missed 4541.023485 CLOSE socket TCP ::1:34895 -> 1.2.3.4:80 | this when polling straceすべてのシステムコールを表示しないフラグといくつかのフラグを使用してこれは可能でしょうか?

4
nohupを使用して複数のコマンドを実行する方法
を使用して複数のコマンドを実行する必要がありますnohup。各コマンドは、前のコマンドの後に実行する必要があります。 例としてこのコマンドを使用しました。 nohup wget $url && wget $url2 > /dev/null 2>&1 & ただし、そのコマンドは機能しませんでした。 この目的のためにどのコマンドを使用する必要がありますか?

4
不正なbashコマンドを終了またはキャンセルするにはどうすればよいですか?
私はこれについて多少の期待を寄せていますが、どこにも答えが見つかりません。それはとても明白なはずのようです。ときどき、bashターミナルで間違ったコマンドを入力すると、カーソルが次の行にエラーや何もせずにジャンプするだけです。何を間違えたかわかりません。私はプログラムにこだわっているようです。再現: $ tidy 私:「おっと!それは私がタイプしたものではない...」 :q 私:「うまくいかなかった...」 :exit :quit exit quit /exit /quit -exit -quit -wtf??? 失敗したことは知っていますが、端末を閉じずにプロンプ​​トに戻るにはどうすればよいですか?

8
どのプロセスがディスクに定期的に書き込みを行っているかを見つける方法は?
どのプロセスが常にディスクに書き込みを行っているかを見つけるにはどうすればよいですか? ワークステーションが静かに近いのが好きで、静かなファンなどで新しいシステム(P8B75-M + Core i5 3450-最大TDPが低いため 's')を構築し、Debian Wheezy 64ビットをインストールしただけですその上。 そして、何かが私の神経になっています:ハードディスクが何かを書いているか、何かを探しているかのようなパターンを聞くことができます(カチカチ...カチカチ...カチカチ... trrrrrrすすぎ、1秒ごとに繰り返します)。 過去に(多くの場合、何年も前に)同様の問題があり、CUPSログか何かであることが判明し、その(重要ではない)ログを(実際の)RAMディスクにリダイレクトしました。 しかし、ここではわかりません。 私は次を試しました: ls -lR /var/log > /tmp/a.tmp && sleep 5 && ls -lR /var/log > /tmp/b.tmp && diff /tmp/?.tmp しかし、何も変わっていません。 奇妙なことに、LVM復号化パスフレーズの入力を求めるプロンプトが表示されたときに、パターンも聞こえます。 インストールしたばかりのカーネル/システムに何かあるのでしょうか、それともハードディスクに欠陥がありますか? hdparm -tT /dev/sda 正しいHD速度(130 GB / sキャッシュなし、sata 6GB)を報告し、大きなソース(Emacs)から問題なくインストールしてコンパイルしたので、システムが悪いとは思わない。 (HDはSeagate Barracude 500GBです)
41 linux  debian  logs  hard-disk 

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