Unix & Linux

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

4
ループデバイスをアトミックに割り当てる方法は?
私はいくつかのディスクイメージを処理するためにいくつかのシェルスクリプトを書いており、いくつかのディスクイメージにアクセスするにはループデバイスを使用する必要があります。ただし、プログラムを競合状態にさらさずにループデバイスを適切に割り当てる方法がわかりません。 私losetup -fは次の未割り当てのループデバイスを取得し、そのループデバイスを次のように割り当てるために使用できることを知っています。 ld=$(losetup -f) sudo losetup $ld myfile.img dostuffwith $ld しかし、プログラムの複数のインスタンスを同時に実行したい場合、これはほぼ競合状態の教科書の例であり、それは私をかなり悩ませます。このプログラムの複数のインスタンスを実行している場合、または他のプログラムもループデバイスを取得しようとしている場合、各プロセスは次の呼び出しの前にループデバイスを割り当てることができないlosetup -f場合があります。その場合、両方のプロセスが同じループであると見なします。デバイスは利用可能ですが、入手できるのは1つだけです。 これに外部同期を使用することもできますが、(可能な場合は)追加の複雑さを避けたいです。また、ループデバイスを使用する他のプログラムは、思いついた同期を尊重しない可能性があります。 この潜在的な競合状態を回避するにはどうすればよいですか?理想的には、たとえば次のようなコマンドを使用して、ループデバイスをアトミックに検出およびバインドできるようにしたいと考えています。 ld=$(sudo losetup -f myfile.img) dostuffwith $ld ただし、それを行うと、$ldループデバイスパスに割り当てられず、sudoアウトを移動すると、sudo ld=$(losetup -f myfile.img)アクセス許可エラーが発生します。

1
xtermが256色を表示するのはなぜですか(xterm-256colorではない)?
誰かがこれを説明できますか?私は使用していgnome-terminalます。まず、いくつかの情報: # echo $TERM xterm # infocmp xterm Reconstructed via infocmp from file: /lib/terminfo/x/xterm colors#8, cols#80, it#8, lines#24, pairs#64 # tput colors 8 色の拡張セットのコードを作成する簡単なスクリプトを書きました。 # Output file (current directory) and text. OFILE='xterm256_colors_test.sh' OFILE_COLORS='terminal_256_colors' OTEXT='Sed ut perspiciatis unde omnis iste natus error sit voluptatem...' # Clearing the contents from previous runs. …

2
誰かが実際に透明な巨大ページを使用して利益を得ていますか?
私は最近、透過的な巨大ページのパフォーマンスの問題に苦労しており、多くのデータベースシステムがオフにすることを推奨していることに気付きました。私はOracle、Postgresql、MySQL、Cassandra、NuoDB、Redis、Hadoopなどについて話している。 たとえば: Peter Zaitsev(2014-07-23)。なぜTokuDBは透明のhugepagesを嫌っています。ペルコナ。 ミケーレ・ケイシー(2013-09-17)。透明で巨大なページのパフォーマンスの問題。オラクル。 Adam AbrevayaおよびOleg Levin(2014-05-15)。 Linux Transparent Huge Pages、JEMalloc、NuoDB。NuoDB DevCentre。 だから私は思っています:この機能からどのような種類のワークロードが恩恵を受けるのですか?

5
bash:変数の最初の行を変数に割り当てる
複数行の変数があり、その変数の最初の行だけが必要です。次のスクリプトは問題を示しています。 #!/bin/bash STRINGTEST="Onlygetthefirstline butnotthesecond orthethird" echo " Take the first line and send to standard output:" echo ${STRINGTEST%%$'\n'*} # Output is as follows: # Onlygetthefirstline echo " Set the value of the variable to the first line of the variable:" STRINGTEST=${STRINGTEST%%$'\n'*} echo " Send the modified variable to standard output:" …
11 bash 

1
Linux +特定のユーザーにのみウォールメッセージを送信する
ご存知のように、Linuxマシン上のすべてのユーザーにブロードキャストメッセージを送信できます。 しかし、特定のユーザーにのみメッセージを送信する方法は? 例えば: #who rodegc pts/1 2015-05-04 04:23 (10.4.72.1) dwwar pts/3 2015-05-03 00:56 (10.4.72.2) tzcsar pts/5 2015-05-03 22:32 (10.4.72.6) . . . . . この場合、ユーザーrodegcにのみブロードキャストメッセージを送信する方法は? マンページから: WALL(1) Linux User's Manual WALL(1) NAME wall -- send a message to everybodyגs terminal. SYNOPSIS wall [-n] [ message ] manページから、特定のユーザーに送信するオプションが表示されません。
11 linux  users 

2
プログラムでパスワードを変更する
現在のバージョンのRaspianでは、現在ログインしているユーザーのパスワードをコマンドラインから次のように変更できることを知っています。 sudo passwd 次に、ユーザーに新しいパスワードを2回入力するように求めます。これにより、次のような出力が生成されます。 Changing password for pi. (current) UNIX password: Enter new UNIX password: Retype new UNIX password: passwd: password updated successfully シェルスクリプトからのように、プログラムでパスワードを変更する方法があるかどうか疑問に思っていました。 Raspberry Piに展開する構成スクリプトを作成しようとしています。手動で新しいパスワードを入力する必要はありません。

2
大きなフォルダーを圧縮せずに1つのファイルに保存する方法
78 GBのフォルダーを1つのファイルに保存し(クラウドサービスにアップロードするため)、アーカイブで圧縮しているかのようにしたいが、圧縮したくない(CPUがそれほど多くない)利用可能な時間)。とにかくこれを達成できることはありますか?おそらく私が知らない端末コマンドですか?


2
フォルダー(サブフォルダーを含む)内のすべての画像のサイズを一括変更するにはどうすればよいですか?
サーバーには12GBの巨大なギャラリーがあり、さまざまなサブフォルダーの画像がいっぱいです。これらのファイルは大きすぎて、フル解像度で使用されていません。すべての画像のサイズを820px幅(縦横比を維持)に変更する必要があります。だから私の質問は-すべての画像のサイズを820pxより大きくし、元のファイルを上書きして保存するようなクロールスクリプトを作成するにはどうすればよいですか? :-)よろしくお願いします。

2
履歴の最後のコマンドから2番目の引数にアクセスする方法は?
私はいくつかの正規表現を学び始めているので、このコマンドを繰り返し使用します: grep pattern /usr/share/dict/american-english パターンが変わる部分だけなので、長い式「/ usr / share / dict / american-english」を何度も書く必要があります。 誰かが、完全な式の代わりに不可解な文字の組み合わせを入力することにより、コマンド履歴からコマンドの引数を展開することが可能であると発言しました。これらの不可解な文字の組み合わせを教えてください。

1
古いファイルがすでに存在する場合、rsyncに--link-destオプションを使用して同一のファイルをリンクさせる方法
--link-dest同一のファイルを使用することがすべての場合に機能すると考える人もいるかもしれません。ただし、ファイルが古く、内容が異なる場合でも、ファイルが存在する場合はそうではありません。 これは、次のrsyncのマニュアルページから--link-destです。 「rsyncは既存のファイルを決定的なものとして扱うため、このオプションは空の宛先階層にコピーするときに最適に機能します(そのため、宛先ファイルがすでに存在する場合、rsyncはリンク先ディレクトリを参照しません)。 これは、y/fileソースと同じz/fileで、古くなっている場合、 rsync -a --del -link-dest=y source:/file z TWOのinode(二回ディスク容量)が使用されて、になりますy/fileし、z/file同じ内容と日付スタンプを持つことになります。 基本的にこのスクリプトを1日に1回実行して毎日のバックアップを行うため、これに遭遇しました。 mv $somedaysago $today; yest=$today; today=`date +%Y%m%d`; rsync -avPShyH --del --link-dest=../$yest host:/dirs $today バックアップは最大10Mファイルに及ぶため、実行に時間rm -rf $olddir; rsync source:$dir newdirがかかりすぎます(特に、1日あたりファイルの0.5%しか変更されない場合、50Kの新しいファイルまたは変更されたファイルを処理するためだけに10M dirエントリの削除と作成が発生します。バックアップは翌日の時間内に完了しません)。 ここに状況のデモがあります: aわれわれの情報源は、ある1を通じて4私たちの番号付きバックアップは、次のとおりです。 $ mkdir -p 1 2; echo foo > 1/foobar; cp -lrv 1/* 2 `1/foobar' -> `2/foobar' $ …
11 rsync 

3
sudo -iがエラーを返す
rootに切り替えようとするとsudo -i、エラーが発生します/var/tmp/sclDvf3Vx: line 8: -i: command not found...しかし、su -引き続き使用することはできます。私は決してLinuxシステム管理者ではないので、環境はまだかなりぼんやりしています。私の質問は次のとおりだと思います: エラーがスローされるのはなぜですか? 2つのコマンドの違いは何ですか? なぜどちらを使うのですか? 更新: CentOSバージョンを使用しています。CentOSリリース6.6(最終) は、以下のコメントで、実行を要求されたいくつかのコマンドの出力です。 type sudo : sudo is /opt/centos/devtoolset-1.1/root/usr/bin/sudo sudo -V : /var/tmp/sclIU7gkA: line 8: -V: command not found grep'^root:' /etc/passwd : root:x:0:0:root:/root:/bin/bash 更新: これは、C ++ 11のサポートが必要だったため、しばらく前に非rootユーザーの〜/ .bashrcに追加されました。コメントアウトして、再SSHすると、sudo -iを問題なく実行できます。 if [ "$(gcc -dumpversion)" != "4.7.2" ]; then scl …

3
Ubuntu-デバイスにスペースが残っていません(NTFS)
私は大量のデータを保存するサーバーを持っており、何百万ものファイルが入った多くのネストされたディレクトリを保持しています。 1つの大きなディレクトリ(約700GB)を1つのディスクから別のディスクに移動しようとすると、エラーが発生します。 mv /media/storage3/dir /media/storage4/ "No space left on device" また、ディスク上に小さなtxtファイルを作成しようとしても機能しません。 Error opening file '/media/storage4/Untitled Document': No space left on device 私は多くのオプションをオンラインでチェックしましたが、どれもうまくいきませんでした。 df -h出力: Filesystem Size Used Avail Use% Mounted on /dev/sdg7 77G 9.2G 64G 13% / none 4.0K 0 4.0K 0% /sys/fs/cgroup udev 32G 4.0K 32G 1% /dev tmpfs …

4
一致するフィールドに基づいて列のペアを合計する
次の形式の大きなファイルがあります。 2 1019 0 12 2 1019 3 0 2 1021 0 2 2 1021 2 0 2 1022 4 5 2 1030 0 1 2 1030 5 0 2 1031 4 4 列2の値が一致する場合、両方の行の列3と4の値を合計します。それ以外の場合は、一意の行の値の合計のみです。 したがって、私が期待している出力は次のようになります。 2 1019 15 2 1021 4 2 1022 9 2 1030 6 2 1031 8 …

2
邪悪なメイドから身を守る、/ bootパーティションの削除を処理する方法
LUKSフルディスク暗号化を使用する場合、悪意のあるメイドからどのように保護しますか? 悪意のあるメイド攻撃とは、不在時に誰かがコンピュータに物理的にアクセスし、暗号化されていない/ bootパーティションを侵害して、次にコンピュータを起動したときにFDEパスワードを取得することです。 解決策の1つは、/ bootパーティションを常に手元にあるUSBスティックに置いておくことです(メイドはそれにアクセスできません)、どのファイルシステムを使用する必要があるか、および削除を適切に処理するようにシステムを構成する方法USBスティックの(そして/ bootパーティション自体)? 私はCentOSを使用していますが、一般的な、ディストリビューションにとらわれない答えはもちろん大歓迎です。ありがとう。

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