Unix & Linux

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

3
なぜfork()はファイル記述子を返すように設計されているのですか?
彼の上に関するウェブページの自己パイプのトリック、ダン・バーンスタインはと競合状態を説明select()し、信号、回避策を提供していますし、その結論を もちろん、正しいことはfork()プロセスIDではなくファイル記述子を返すことです。 彼はこれによって何を意味しselect()ますか?シグナルハンドラを使用してそれらの状態変化を通知する代わりに、子プロセスで状態変化を処理することができるということですか?

2
ライブラリのロードをトレースするにはどうすればよいですか?
システムにインストールされているlibboost 1.67にリンクされているライブラリに依存するプログラムがあります。起動すると、libboost_system.so.1.58存在しないエラーが発生します。LD_PRELOADそしてLD_LIBRARY_PATH設定されていません。 lddtree実行では、このライブラリは依存関係として表示されませんが、表示されlddます。 ライブラリが必要な場所からどのようにトレースできますか?
16 libraries 

4
パイプされたデータのサイズを測定する方法は?
私はこのようなことをしたいと思います: > grep pattern file.txt | size -h 16.4 MB または同等のもの: > grep pattern file.txt > grepped.txt > ls -h grepped.txt 16.4 MB > rm grepped.txt (しかし、それは少し不便でしょう) それは可能ですか?
16 pipe 

1
/lib64/ld-linux-x86-64.so.2とは何ですか。なぜファイルの実行に使用できるのですか?
最近、ファイルに実行権限がない場合、を使用してそのファイルを実行できるというトリックを学びました/lib64/ld-linux-x86-64.so.2。 たとえば、xのアクセス許可を復元するには -rw-r--r-- 1 root root 59K Mar 1 2017 /bin/chmod 私たちは走ることができます /lib64/ld-linux-x86-64.so.2 /bin/chmod +x /bin/chmod 私はそれがどのように行われるのか本当に知りません、それは通常のことではなく、一種のミステリーです。
16 linux  files  libraries 

1
Arch LinuxのHDMI経由のサウンド
東芝のラップトップ(Satellite A300)をHDMI経由でテレビに接続しました。VLC 2.2.6を使用すると、ビデオは問題なく機能します。 現在、私はテレビのスピーカーに音を出力しようとしています。 aplay -l 3番目のHDMI再生デバイスを示しています。 **** List of PLAYBACK Hardware Devices **** card 0: Intel [HDA Intel], device 0: ALC268 Analog [ALC268 Analog] Subdevices: 1/1 Subdevice #0: subdevice #0 card 0: Intel [HDA Intel], device 1: ALC268 Digital [ALC268 Digital] Subdevices: 1/1 Subdevice #0: subdevice #0 card 0: …
16 arch-linux  audio  vlc  hdmi 

5
ddは何らかの検証を行いますか?
dd古いハードドライブから新しいハードドライブにデータをコピーするために使用しています。データの整合性が安全であることを確認したいです。 この答えについて、ジルは言う [dd]が正常に終了した場合、ハードウェア障害がない限り、バックアップは正しいです… それはどういう意味ですか?いdd検証に建てられたのいくつかの種類がありますか? 代わりにrsyncを使用する場合は--checksum、確認のために2回目のパスも実行します。そのような妄想は正当化されますか?

5
BASH連想配列印刷
すべての要素をループすることなく、配列全体([key] = value)を印刷する方法はありますか? いくつかの要素を持つ配列を作成したと仮定します。 declare -A array array=([a1]=1 [a2]=2 ... [b1]=bbb ... [f500]=abcdef) 配列全体を印刷して戻すことができます for i in "${!array[@]}" do echo "${i}=${array[$i]}" done ただし、bashはすべての配列要素を1つの "go"(キー${!array[@]}と値の両方)で取得する方法を既に知っているようです${array[@]}。 ループなしでこの情報をbashに出力させる方法はありますか? 編集: typeset -p arrayそれは! ただし、1回の置換でプレフィックスとサフィックスの両方を削除することはできません。 a="$(typeset -p array)" b="${a##*(}" c="${b%% )*}" 出力のキー=値部分のみを取得/印刷するよりクリーンな方法はありますか?

2
ディレクトリを指すシンボリックリンクを作成するために使用できるべき等べきコマンドは何ですか?
ディレクトリへのシンボリックリンクを作成するシェルスクリプトにコマンドを配置したいのですが、このスクリプトは何度も実行される可能性があるため、以降の呼び出しでは、コマンドは何も変更しません。 ディレクトリ構造は次のとおりです。 % tree /tmp/test_symlink /tmp/test_symlink ├── foo └── repo └── resources └── snippets ├── php.snippets ├── sh.snippets ├── snippets.snippets ├── sql.snippets └── vim.snippets foo/ディレクトリを指すスニペットと呼ばれるシンボリックリンクを作成したいと思います/tmp/test_symlink/repo/resources/snippets。 だから私は実行します: % ln -sfv /tmp/test_symlink/repo/resources/snippets /tmp/test_symlink/foo/snippets '/tmp/test_symlink/foo/snippets' -> '/tmp/test_symlink/repo/resources/snippets' 望ましい結果が得られます。 % tree /tmp/test_symlink /tmp/test_symlink ├── foo │ └── snippets -> /tmp/test_symlink/repo/resources/snippets └── repo └── resources …



3
別のサービスが開始またはリロードした場合、Systemd Unitサービスが再起動します
可能な場合は、システムによってインストールおよびアップグレードされる編集なしで、開始またはリロード(構成のリロードのみ)するときSystemdに再起動A.service(After)する方法があるかどうかを知りたいです。B.serviceB.service A.serviceがB.serviceインストール、無効、または停止されていない場合でも起動する必要があります。 A.service: [Unit] After = B.service network-online.target Wants = B.service [Service] Type=oneshot ExecStart = /script.sh start ExecStop = /script.sh stop RemainAfterExit=yes [Install] WantedBy = network-online.target B.service: [Unit] After=syslog.target network.target [Service] Type=forking ExecStart=/cmd start ExecStop=/cmd stop ExecReload=/cmd reload PIDFile=/var/run/cmd.pid [Install] WantedBy=multi-user.target
16 systemd 

4
ビット単位シフトとBashの最大整数
これは探索の質問です。つまり、この質問が何であるかは完全にはわかりませんが、Bashの最大の整数に関するものだと思います。とにかく、表向きに定義します。 $ echo $((1<<8)) 256 ビットをシフトして整数を生成しています。どこまで行けますか? $ echo $((1<<80000)) 1 これまでのところ、どうやら。(1は予想外であり、私はそれに戻ります。)しかし、 $ echo $((1<<1022)) 4611686018427387904 まだポジティブです。ただし、これではありません: $ echo $((1<<1023)) -9223372036854775808 そしてさらに一歩先へ、 $ echo $((1<<1024)) 1 なぜ1ですか?そして、なぜ次の? $ echo $((1<<1025)) 2 $ echo $((1<<1026)) 4 誰かがこのシリーズを分析したいですか? 更新 私のマシン: $ uname -a Linux tomas-Latitude-E4200 4.4.0-47-generic #68-Ubuntu SMP Wed Oct 26 19:39:52 UTC …
16 bash  arithmetic 

4
URxvt> = 9.20でCTRL-ALT- [C | V]をCTRL-SHIFT- [C | V]に再バインド
ためURxvtで9.20、テキストをクリップボードにコピーすることができるCtrl+ Alt+ C(とも有するから貼り付けCtrl+ Alt+ V)。 しかし、私はすでにこれらのバインディングを別の目的に使用しています。 では、URxvt9.20以上でCtrl+ Shift+ C(および貼り付けの場合はCtrl+ Shift+ V)に再バインドするにはどうすればよいですか?

8
バイナリは異なるCPUアーキテクチャ間で移植可能ですか?
私の目標は、組み込みLinux向けに開発できるようにすることです。ARMを使用したベアメタル組み込みシステムの経験があります。 さまざまなCPUターゲット向けの開発に関する一般的な質問があります。私の質問は次のとおりです。 ' x86ターゲット、Linux OSバージョンxyz 'で実行するようにコンパイルされたアプリケーションがある場合、別のシステム ' ARMターゲット、linux OSバージョンxyz 'で同じコンパイル済みバイナリを実行できますか? 上記が当てはまらない場合、唯一の方法は、関連するツールチェーン「たとえば、arm-linux-gnueabi」を使用してアプリケーションのソースコードを再構築/再コンパイルすることです? 同様に、「x86ターゲット、Linux OSバージョンxyz」で動作するロード可能なカーネルモジュール(デバイスドライバー)がある場合、別のシステム「ARMターゲット、Linux OSバージョンxyz」で同じコンパイル済み.koをロード/使用できますか? 上記が当てはまらない場合、唯一の方法は、関連するツールチェーン「たとえば、arm-linux-gnueabi」を使用してドライバのソースコードを再構築/再コンパイルすることです?

4
initramfsからルートファイルシステムをマウントする
これは一般的なシナリオです。何らかの理由で、initramfs(重要な場合はOpenSUSE)がルートファイルシステムを見つけられなかったため、レスキューシェルにドロップされます。ただし、どのデバイスをマウントする必要があるかは完全にわかっています。私の質問: ルートファイルシステムをマウントし、ブートシーケンスを続行する正しい手順は何ですか? おそらくそれがレスキューコンソールの重要なポイントです。それでも、実際にこれを行う方法を文書化した人はいないようです。 明らかに、ルートファイルシステムをどこかにマウントできます。しかし、それをファイルシステムツリーのルートにするにはどうすればよいですか?そして、その後、通常のブートプロセスを続行しますか?(シェルを終了するだけでそれができると思いましたが、そうではありません。)続行する前にマウントするために必要なものは何ですか?

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