Unix & Linux

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

4
情報ページをどのようにPDFに出力しますか?
マニュアルページをPDFにman -t ls | ps2pdf - > ls.pdf出力するのに役立つ場合、情報ページはどうですか?lsps2pdf 私は次のようなものを試しましたが、成功しませんでした: info -o info | ps2pdf - > info.pdf これは、info.pdfという空のpdfファイルを出力し、本文をテキストファイルに出力するだけです。
10 pdf  man  info 

1
制御を失うことなくリモートホストのIPアドレスを変更する(Linux)
まったく切断されずに(「IPアドレスなし」の状態にならずに)リモートホストのプライマリ IPアドレスを変更するにはどうすればよいですか。 問題はインターネット上ではあまり議論されていません(私の研究によると)。私が見つけた最高のリソースは少しトリッキーです。 例:10.0.0.11/24を10.0.0.15/24に変更する 1. ssh root@10.0.0.11 2. ip addr add 10.0.0.15/24 dev eth0 3. logout 4. ssh root@10.0.0.15 5. ip addr del 10.0.0.11/24 dev eth0 問題: 10.0.0.11がプライマリであるため、最後のコマンドで両方のIPアドレスが削除され、接続が失われ、削除するとセカンダリアドレス(10.0.0.15が属する)が削除されます。 10.0.0.11/ 25(24の代わりに)を追加することで、「チート」できることを知っています。ただし、理論的にはこれを正しく行うことは可能だと思います。 どう思いますか?
10 linux  ip  routing 

3
エスケープが押されたときにCaps Lockをオフにする
を押すCapsLockたびに無効にする方法はありますか?Escはい、VIMを使用しています。私は実際に代替のすべて大文字のキーボードレイアウトをCtrl-6持っていますが、それは面倒で、Esc押されたときはいつでもOSにCapsLockを無効にさせたいと思います。また、他のサーバーに数時間SSHで接続することが多いので、そこに在庫のあるVIMを使用しています。 たまたまCapsLock、Escキーとキーを交換したことに注意してください。ただし、Escキーが押されたとき(たまたまCapsLockキーボードにラベルが付けられ、の横にありますA)、との両方を実行する必要がEscapeありDisable-CapsLock-If-It-Is-Enabledます。 これはKubuntu 12.10にあります。ありがとう。
10 keyboard  xkb  kubuntu 

2
なぜ$ '\ 0'は ''と同じですか?
いくつかのファイルで処理を行う一般的な方法は次のとおりです。そのために私を襲わないでください。 for f in $(ls); do … ここで、スペースやその他の奇妙な文字を含むファイルに対して安全にするために、素朴な方法は次のようにすることです: find . -type f -print0 | while IFS= read -r -d '' file; … ここでは、-d ''はASCII NULをのように設定するための略語-d $'\0'です。 しかし、それはなぜですか?なぜ''と$'\0'同じ?これは、空の文字列が常にnullで終了しているBashのCルートによるものですか?
10 bash 

2
「grep -r foo *」対「grep -r foo」
grep -rを使用すると、*または。のいずれかを使用してすべてのファイルを検索できます。同じものを返すようですが、本当に同じですか? 「foo」を検索するとすると、次のように書くことができます grep -r foo * または grep -r foo . 誰もが違いを説明しようとするだろうか。そして*?
10 grep  wildcards 


2
findコマンドからパイプされたファイル名を操作する
私はBashに比較的慣れていないため、表面上は非常に簡単に思える何かを実行しようとしています。ディレクトリ階層全体でfindを実行して、すべての* .wmaファイルを取得し、その出力をコマンドにパイプして、mp3に変換します。変換したファイルを.mp3として保存します。私の考えは、コマンドは次のようになるはずだと考えていました(オーディオ変換コマンドは省略し、代わりに説明のためにエコーを使用しています)。 $ find ./ -name '*.wma' -type f -print0 | xargs -0 -I f echo ${f%.*}.mp3 私が理解しているように、-print0引数を使用すると、スペースを含むファイル名を処理できます(これらの多くは、音楽ファイルであるので、これを行います)。次に、(xargsの結果として)findからの各ファイルパスがfにキャプチャされ、文字列の最後から部分文字列の一致/削除を使用すると、mp3で元のファイルパスをエコーする必要があることを期待していますwmaの代わりに拡張子。ただし、この結果の代わりに、次のように表示されます。 *.mp3 *.mp3 *.mp3 *.mp3 *.mp3 *.mp3 *.mp3 *.mp3 *.mp3 ... だから私の質問(特定の「ここで何が間違っているのか」を除いて)はこれです-パイプ操作の結果である値は、変数割り当ての結果である値とは異なる文字列操作操作で処理する必要があります?

1
孤立したプロセスグループでインタラクティブシェルは何をすべきですか?
(/programming/13718394/what-should-interactive-shells-do-in-orphaned-process-groupsの提案に従ってUNIXに再投稿する) 簡単な質問は、ttyを所有していない孤立したプロセスグループ内にある場合、シェルは何をすべきかということです。しかし、面白いので、長い質問を読むことをお勧めします。 以下は、お気に入りのシェルを使用して、ラップトップをポータブルスペースヒーターに変える楽しくてエキサイティングな方法です(tcshの変人の1人でない限り)。 #include <unistd.h> int main(void) { if (fork() == 0) { execl("/bin/bash", "/bin/bash", NULL); } return 0; } これにより、bashはCPUを100%に固定します。zshとfishは同じことをしますが、kshとtcshはジョブ制御について何かをつぶやいてからキールします。これは少し優れていますが、それほど多くはありません。ああ、それはプラットフォームにとらわれない犯罪者です。OSXとLinuxの両方が影響を受けます。 私の(潜在的に間違っている)説明は次のとおりです:子シェルがそれがフォアグラウンドにないことを検出しました:tcgetpgrp(0) != getpgrp()。したがって、それ自体を停止しようとしますkillpg(getpgrp(), SIGTTIN)。しかし、その親(Cプログラム)がリーダーで死亡したため、そのプロセスグループは孤立SIGTTINしています。孤立したプロセスグループに送信されたものは削除されるだけです(それ以外の場合は、再び起動できません)。したがって、子シェルは停止されませんが、まだバックグラウンドにあるので、すぐにすべてが再び実行されます。すすぎ、繰り返します。 私の質問は、コマンドラインシェルがこのシナリオをどのように検出できるか、そしてそれを行うための正しいことは何ですか?私には2つの解決策がありますが、どちらも理想的ではありません。 pidがグループIDと一致するプロセスにシグナルを送ろうとします。それがで失敗する場合ESRCH、それはおそらく孤立していることを意味します。 から1バイトのノンブロッキング読み取りを試みます/dev/tty。それがで失敗する場合EIO、それはおそらく孤立していることを意味します。 (これを追跡する私たちの問題はhttps://github.com/fish-shell/fish-shell/issues/422です) あなたの考えをありがとう!

4
autofsマウントが非アクティブになっても切断されない
私が持っているのautofsユーザ/ホームディレクトリのための中央NFSサーバに接続している複数のLinuxサーバにインストールします。ログイン時にディレクトリをマウントするときにうまく機能しますが、マウントがタイムアウトすることはありません。/ etc / sysconfig / autofsを確認しましたが、デフォルトは実際に300に設定されているため、これらは5分後にタイムアウトになるはずです。 autofsを再起動すると、すべてのディレクトリがアンマウントされるため、それが可能であることはわかっています。 ディレクトリでランダムにlsofを使用しようとしましたが、開いているファイルが表示されません。 また、アクティブではないことがわかっているランダムなディレクトリをマウントしましたが、これらは自分自身をアンマウントすることはありません。これらのボックスの一部には、一度ログインしたことがある10人以上のユーザーがいて、マウントがドロップすることはありません。 私はそこから見つけようとしているのですが、その理由を見つけるためのより良い方法があります。ログに何も表示されません。 任意の提案をいただければ幸いです。ありがとう! 更新 autofsのデバッグをオンにしましたが、異常なことは何も明らかになりません。これらのログは、/ home / user1が最初にマウントされてから7分後、非アクティブ状態が6分間続いた後に生成されました。5分のデフォルトによると、これはマウント解除されているはずです。アンマウントする試みが行われたことを示すログが表示されるのを見たことはありません。 Jan 11 12:52:00 linux automount[26505]: st_expire: state 1 path /home Jan 11 12:52:00 linux automount[26505]: expire_proc: exp_proc = 3055176592 path /home Jan 11 12:52:00 linux automount[26505]: expire_proc_indirect: expire /home/user1 Jan 11 12:52:00 linux automount[26505]: …
10 rhel  mount  nfs  autofs 


1
ALSA / ASoC:デバイス/ドライバーを正しくロードする方法は?
Buildrootを使用して、NXP LPC3250マイクロコントローラー用の組み込みLinux(2.6.39.2)システムを構築しています。 現在、ALSA / ASoCを起動して実行しようとしていますが、モジュールを一緒に機能させるのにいくつか問題があります。(おもう!) 重要な背景: 私がテストしているボードは、Embedded Artists 3250 V2開発ボードです。V2は、LCD画面がないという点でV1とは異なりますが、I2Sオーディオコーデック(NXP UDA1380)が含まれています。EA3250 V1のボードサポートは、カーネルのLPCLinuxバージョンに含まれています。Phytec 3250と呼ばれる別の開発ボードもあり、同じUDA1380コーデックチップが含まれています。LPCLinuxディストリビューションは、オーディオコーデックチップとともにPhytecボードもサポートしています。私が識別したことから、Phytec 3250ボードのI2Cアドレス0x18にはUDA1380コーデックが搭載されています。私のEA3250 V2ボードでは、オーディオコーデックはI2Cアドレス0x1aにあります。(チップの電源が入っていることを確認しました。I2C-toolsパッケージを使用して通信できます。i2cdetectに応答し、i2cgetを使用してチップからレジスタを正しく読み取ることができます。) ソースの変更: Phytec 3250ドライバーファイルを編集して、コーデックチップのアドレスを変更する必要がありました。lpc3xxx-uda1380.cのこのセクションを編集しました。 static struct snd_soc_dai_link phy3250_uda1380_dai[] = { { .name = "uda1380", .stream_name = "UDA1380 Duplex", #if defined(CONFIG_SND_LPC32XX_USEI2S1) .cpu_dai_name = "lpc3xxx-i2s1", #else .cpu_dai_name = "lpc3xxx-i2s0", #endif .codec_dai_name = "uda1380-hifi", .init = phy3250_uda1380_init, .platform_name = …

2
ファイルをコピーせずに別のディレクトリからtarファイル
これは、ここの専門家にとって非常に簡単なはずです。 6GBのユーザーディスククォータを持つLinuxアカウントを持っています。/opt圧縮すると1GB になると約3GBのデータが入ったデータフォルダがいくつかあります。にはいくつかのシンボリックリンクがありますdata-folder。通常、仕事のバックアップを取るために、私は次のことをしていました。 cp -rvfL /opt/data-folder ~/ cd ~/ tar -zcvf data-folder.tar.gz data-folder rm -rvf data-folder これで、ユーザーのディスククォータで既に2.5 GBを消費しています。家にファイルをコピーするのに十分なスペースがありますが、家にはコピーできませんtar。 パイプを使用するなどして、単一のコマンドでフォルダーをtarしてコピーする方法はありますか? PSへの/opt読み取りアクセスしか持っていないため、tarで読み込むことができません/opt。
10 files  tar  cp 

4
3文字おきに文字を追加するsedワンライナーを作成するにはどうすればよいですか?
だから、私はこのような文字列を持っています: AUGGCCAUGGCGCCCAGAACUGAGAUCAAUAGUACCCGUAUUAACGGGUGA そして、文字列を「+」記号で区切られた3文字のチャンクに分割したいと思います。 AUG+GCC+AUG+GCG+CCC+AGA+ACU+GAG+AUC+AAU+AGU+ACC+CGU+AUU+AAC+GGG+UGA そして、私は私の良き友人とそれをしたいですsed。 私は試した cat codons | sed -r 's/([A-Z]\{3\})/\1\+/g' ...成功しませんでした。 どのsedコマンドを使用できますか?

1
Apacheによって開かれたままになっている削除されたファイルを回復しますか?
Apacheログファイルが削除されたが、Apacheによって開いたままになっているとします。次に、これは私がやっていることです: pid=$(lsof | grep text.txt | awk '/deleted/ {print $2}') fd=$(lsof | grep text.txt | awk '/deleted/ {print $4}' | grep -oE "[[:digit:]]{1,}") cp /proc/$pid/fd/$fd directorytobecopied/testfile.txt これは私がファイルを回復して元の場所に戻すために行っていることです。上記のコードは見栄えが悪いので、これを行う簡単な方法はありますか?さらに、ファイルが削除された場所(directorytobecopied)からどのようにして知ることができるので、手動でファイルの元の場所を誰かに尋ねて、そこに戻す必要がありません。

2
cronと同じ環境の対話型シェル
私はcrontabの魔法の世界で多くの落とし穴を認識していますが、シェルスクリプトがcrontab。 今私は自分のことを考えましたが/bin/openvt -c8 -- /bin/bash --noprofile -l、ルート権限が必要であり、設定する変数が多すぎ、単純なsu myusername設定では追加の環境がたくさん設定されます。 対話型のbashシェルをcronと同一の環境で起動し、Kubuntuでroot権限を必要としない方法を知っている人はいますか? sshセッション、GUI、および次のOSの1つ以上で動作する場合のボーナス:HP-UX、Solaris、AIX

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