Unix & Linux

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


4
多くの大きなファイルで重複する行を見つける方法は?
30k以下のファイルがあります。各ファイルには〜100k行が含まれます。行にはスペースが含まれていません。個々のファイル内の行はソートされ、複製されません。 私の目標:2つ以上のファイルにまたがるすべての重複行と、重複したエントリを含むファイルの名前も検索したいです。 簡単な解決策はこれです: cat *.words | sort | uniq -c | grep -v -F '1 ' そして私は走るでしょう: grep 'duplicated entry' *.words より効率的な方法がわかりますか?


3
コンマ区切りのリストを次のコマンドの引数として指定する方法
s1「、」で区切られた数値のリストを出力するスクリプトがあります1,2,3,4。ここで、これらの数値をs2引数としてスクリプトに指定し、s2がそれぞれで実行され、その結果が別々の行に出力されるようにします。たとえば、s2が数値を2倍する場合、これは私が探している結果です。 2 4 6 8 私が今やっていることは: s1 | xargs -d "," | xargs -n1 s2 でも馬鹿なやり方でやっているような気がします!だから私の質問は: それを行う適切な方法は何ですか? 私の解決策の私の問題は、xargsを2回呼び出し、入力を2回反復することです。これはもちろん、パフォーマンスの観点から見ると妥当ではありません。答えxargs -d "," -n1はいいようですが、それが1回だけ繰り返されるかどうかはわかりません。もしそうなら、あなたの答えでそれを確認してください、そして私はそれを受け入れます。ちなみに、Perlはまだ2度繰り返されており、Perlが多くのシステムに存在しない可能性があるため、Perlは使用しません。
9 pipe  xargs  arguments 

3
DNSに9.9.9.9を使用していることを確認するにはどうすればよいですか?
LANに複数のマシンがあります。それらのほとんどはUbuntuベースです。ルーターにはDD-WRT(v3.0-r33675M kongacリリース:11/03/17)ファームウェアが搭載されています。 DHCPを設定して、すべてのコンピューターのネットワーク設定を提供しました。ルーターはDNSサーバーに9.9.9.9を使用するように設定されています。 今、コンピュータがDNSにquad9を使用していることを確認したいのですが、使用できません。私のコンピューターはルーターのみを認識しており、使用しているDNSを認識していません。 たとえば、コマンド(Ubuntuの場合) sudo netstat -l --inet -n -v -p | grep :53 | grep -i udp 与える udp 0 0 127.0.1.1:53 0.0.0.0:* したがって、この方法でquad9を使用していることを確認できません。 ルーターはこのコマンドを認識しないため、DNS設定をそのように確認できません。 この投稿のコンピューターとDD-WRTコマンドラインで試したことはありますが、何の助けにもなりません。 どのDNSサーバーを使用していますか? DNSにquad9を使用していることを適切に確認するにはどうすればよいですか?
9 ubuntu  dns  dd-wrt 

1
バッドブロックは信頼できますか?
実際に不良ブロックと見なされる不良ブロックについては何も見つかりません。マニュアルページを読んで、ここでたくさんの質問を見ましたが、詳細はわかりません。また、badblockはどの程度優れていますか?その結果を信頼すべきですか?私の会社は歴史的にビクトリアをHirens Boot CDでハードディスクのテストに使用していましたが、それは新しいコンピューターでは常に良いオプションとは限りません。

6
現在の時刻が23:00から06:30の間にあるかどうかを確認する方法
現在の時刻が23:00から06:30の間である場合、bashスクリプトから適切にチェックする方法を理解するのに苦労しています。時刻を確認するために無限ループを実行し、時間範囲が午後11時から午前6時30分の間の場合は何かを実行しようとしています。これが私がこれまでに書いたものですが、翌日は機能しません。 fireup() { local starttime=$(date --date="23:00" +"%s") local endtime=$(date --date="06:30" +"%s") while :; do local currenttime=$(date +%s) if [ "$currenttime" -ge "$starttime" -a "$currenttime" -ge "$endtime" ]; then do_something else do_something_else fi test "$?" -gt 128 && break local currenttime=$(date +%s) done & } 私は何を間違っていますか?
9 scripting  date 

2
サスペンド後の即時ウェイクアップ
私のDebian 9システムは、手動または自動でスリープモード(RAMにサスペンド)に入ってから2〜5秒で起動します。スリープモードがどのように呼び出されても、問題は常に発生します:蓋を閉じる、電源ボタン、またはターミナルから。何が問題でしょうか? ここにシステム情報があります: $ sudo dmidecode | grep -A3 '^System Information' System Information Manufacturer: LENOVO Product Name: 20ET004LGE Version: ThinkPad E460 $ uname -a Linux 4.9.0-3-amd64 #1 SMP Debian 4.9.30-2+deb9u5 (2017-09-19) x86_64 GNU/Linux 問題の原因となるデバイスを確認するために、を/proc/acpi/wakeup発行してすべてのデバイスを一時的に確認してから無効echo DeviceName > /proc/acpi/wakeupにしましたが、問題はまだ解決しません。これは私が変更する前です: $ cat /proc/acpi/wakeup Device S-state Status Sysfs node LID S4 *enabled platform:PNP0C0D:00 SLPB …

1
.zcompdumpファイルの個別のパス
.zcompdump-*ファイルはダンプされた構成ファイルであり、完了を高速化し、安全に削除できることを理解しています。ホームディレクトリが乱雑になるため、別の場所に保存します。そうするための良い方法は何ですか? ZDOTDIR変数を使用するオプションがあることはわかっていますが、その場合、すべてのzshドットファイルをその場所に配置する必要があります。.zcompdumpファイルを別の場所に保存したいだけです。
9 zsh 

2
LVM +一時的なアーカイブ名を作成できませんでした
私たちは/に100%を持っています Filesystem Size Used Avail Use% Mounted on /dev/mapper/vg08_root 20G 20G 132K 100% / lvextendを実行すると、次のエラーが発生します # lvextend -L+5G /dev/mapper/vg08_root Couldn't create temporary archive name. Volume group "vg00" metadata archive failed. これを解決する方法?
9 linux  rhel  lvm 

1
MMAPについて
ここでMMAPに関するドキュメントを調べていて、これを使用して実装しようとしました その実装について、いくつか疑問があります。 MMAPはファイルのマッピングを提供し、物理メモリ内のその場所のポインターを返しますか、それともマッピングテーブルのアドレスを返しますか?そして、そのファイルにもスペースを割り当ててロックしますか? ファイルがメモリ内のその場所に保存されたら、munmapが呼び出されるまでファイルはそのまま残りますか? ファイルはメモリに移動されますか、それともリダイレクトとして機能する単なるマッピングテーブルであり、ファイルは実際には仮想メモリ(ディスク)にありますか? メモリに移動されたと仮定すると、他のプロセスがアドレスを持っている場合、そのスペースにアクセスしてデータを読み取ることができますか?

1
gnomeターミナルでタブを保存および復元する
GNOME端末3.14.3があります。このバージョンは--save-configオプションをサポートしていません。このバージョンでこれを行う他の方法はありますか?他にどのようにしてタブを保存および復元できますか?どのバージョンのgnome端末を使用できるのですか? エラーは: Option "--save-config" is no longer supported in this version of gnome-terminal

1
スクリプトの履歴拡張は無効になっていますか?
次のエラーは!履歴の拡張に使用されたことが原因であると理解しています。 $ echo "Hello!Tim" bash: !Tim: event not found ただし、コマンドをスクリプトに入れてスクリプトを実行しても問題はありません。 $ cat myscript echo "Hello!Tim" $ bash myscript Hello!Tim 何故ですか?bashマニュアルに理由が記載されていますか?

4
errexitを含むすべてのシェルオプションを保存および復元する方法
シェルオプションを変更して復元する方法について、さまざまなスタック交換サイトとUNIXヘルプフォーラムで多くの質問を読みました。ここで見つけた最も包括的な質問は、「set -x」を「元に戻す」方法です。 受信した知恵は、いずれかの結果をオフに保存することであると考えられるset +oかshopt -po、その後、evalそれが後に以前の設定を復元します。 ただし、bash 3.xおよび4.xを使用した私自身のテストでは、errexitコマンド置換を行うときにオプションが正しく保存されません。 問題を示すスクリプトの例を次に示します。 set -o errexit set -o nounset echo "LOCAL SETTINGS:" set +o OLDOPTS=$(set +o) echo echo "SAVED SETTINGS:" echo "$OLDOPTS" そして出力(無関係な変数のいくつかを削除しました): LOCAL SETTINGS: set -o errexit set -o nounset SAVED SETTINGS: set +o errexit set -o nounset これは非常に危険なようです。私が書くほとんどのスクリプトはerrexit、コマンドが失敗した場合に実行を停止することに依存しています。これによって引き起こされたスクリプトの1つにバグを見つけerrexitました。最後に復元するはずの関数がそれを上書きし、スクリプトの実行中はデフォルトのオフに戻しました。 私ができることは、必要に応じてオプションを設定し、終了する前にすべてのオプションを適切に復元できる関数を作成することです。しかし、コマンド置換によって呼び出されたサブシェルでerrexitは継承されていないようです。 set +oコマンド置換を使用したり、FIFOフープをジャンプしたりせずに結果を保存する方法に困っています。からは読み取ることができますが$SHELLOPTS、書き込み可能ではないか、またはevalフォーマット可能ではありません。 サブシェル関数を使用することも選択肢の1つであることは知っていますが、その場合、出力をログに記録したり、複数の変数を返したりするために多くの問題が生じます。 おそらく関連している:https …
9 bash  shell 

1
Debian Stretchソースのtcpポートは*常に*です
Azureロードバランサーを使用していくつかの奇妙な動作をデバッグしているときに、ローカルのDebian Stretch TCPスタックが偶数番号のポートとのTCP接続しか確立していないことに気付きました。奇数のソースポートで単一のTCPハンドシェイクを開始しません。それは意図されていますか?

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