Unix & Linux

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

1
保留中の文字が256文字を超えると、8250 UARTドライバーがTTYを起動しないのはなぜですか?
このif条件の動機は何void serial8250_tx_chars(struct uart_8250_port *up)ですか? if (uart_circ_chars_pending(xmit) < WAKEUP_CHARS) uart_write_wakeup(port); Linux 1.1.13(1994年5月)から存在し、ほとんどのUARTドライバーで繰り返されています。 背景:カスタマイズされたLinux 3.4.91、ARMv7の組み込みシステム、UARTポート0は、38400ボー、I / O用の16バイトFIFOに設定されています。これは、セットアップでは変更できません。 UARTを介してコンソールで非常に重いprintfを実行すると、内部の4kBバッファー(UART_XMIT_SIZE)がいっぱいになり、バッファーが空になるまで(38400ボーで1秒かかります)、ユーザー空間プロセスが停止します。その後、この動作が繰り返されます。これはn_tty_write()、バッファがいっぱいになると関数がスリープ状態になり、上記の疑わしい状態のために長時間ウェイクアップされないためです。 このチェックを削除するだけで、より自然で効率的になります。次に、printfsはできるだけ早くバッファーをいっぱいにして、私が観察しているバースト処理ではなく、バッファーが空になる速度で続行します。 私の環境では問題なく動作しますが、確かに何かが足りない、または誤解しています。現在の実装には理由があるはずです。その状態を取り除くと副作用はありますか? 余談ですが、この動作を調整するための構成オプションはありますか。たとえば、printfが常にすぐに戻り、バッファーがいっぱいの場合は出力を破棄するように設定しますか?

1
make-kpkgとmake deb-pkgの違い
私は間の正確な違いを知っているしたいmake-kpkgとしmake deb-pkg。この質問はほとんど同じことを尋ねますが、満足のいく答えはありません。以前は使用していた make -j `getconf _NPROCESSORS_ONLN` deb-pkg カーネルソースツリーをコンパイルし、header + kernel-image debianパッケージを生成します。第2世代Intel i3 CPUでコンパイルするのに1時間以上かかるため、非常に遅いことがわかりました。次に、以前に使用した方法make-kpkgよりも5〜6倍速い別の方法を見つけましたdeb-pkg。私が実行するコード fakeroot make-kpkg --initrd --append-to-version=-custom kernel_image kernel_headers -j `getconf _NPROCESSORS_ONLN` また、debパッケージをコンパイルして生成するのに必要な時間はわずか10〜15分です。どちらのコンパイルプロセスでも、ジョブが分割されるため_NPROCESSORS_ONLN、この違いは何ですか?前もって感謝します。

2
whitepsacesを使用して複数のファイルから特定の文字を削除する
ディレクトリ内の多数の音楽トラックの名前を変更しようとしていますが、次のエラーが発生しました。 複数のファイルを移動する場合、最後の引数はディレクトリでなければなりません これはスクリプトです: for file in * ; do mv $file $(echo $file |sed 's/^.\{5\}//g') done これは空白のないファイルで機能しますが、このスクリプトをどのように変更しますか?
8 linux  bash  scripting  sed 

4
Dropboxの代わりにrsync + sshベースの方法を探す
いくつかのディレクトリをいくつかのUnixホストで同期させるために、rsyncを使用して個人(つまり1人のユーザー)のDropboxの代替を設定したいと思います。 一度に1人のユーザー(つまり、私)のみが1つのホストのコンテンツを変更するため、これらの変更が時間的に重複しないと想定しても安全です。この意味は 変更と同期の間に10〜15分の遅れが許容されます。 修正時間は、「現在のバージョン」の妥当なプロキシでなければなりません。 複数のサーバーの同期を維持するために出会ったすべてのrsyncスキームは、バックアップなど、1日1回の同期スケジュールで機能します。また、これらのスキームでは通常、1つのホストがマスターで、残りのホストがそれをミラーリングしますが、私が想定している状況では、ホストのいずれかで変更が発生する可能性があります。 誰かがこのようなことをするためにrsync + sshを設定するためのツールまたはハウツーを私に指摘できますか?
8 ssh  rsync 

1
4.0以降のLinuxカーネルのUSBドライバーで何が変更されましたか?
3.19までのカーネルで、私のUSBデバイスはすべて完全に動作します。 4.0以降にアップグレードすると、一部のUSBデバイスが機能しなくなり、カーネルが次のようなエラーを生成します。 [ 3.369436] usb 9-1: device descriptor read/64, error -62 [ 3.593543] usb 9-1: new full-speed USB device number 4 using ohci-pci [ 3.997572] usb 9-1: device not accepting address 4, error -62 [ 4.120602] usb 9-1: new full-speed USB device number 5 using ohci-pci [ 4.524792] usb 9-1: …
8 linux  kernel  usb  dvb 

3
暗号化された(GPG)ファイルをオンザフライでスクリプトで調達する方法はありますか?
入手するファイルには機密情報が含まれているため、暗号化されたファイルを入手するにはbashスクリプトが必要です。 スクリプトでGPGパスフレーズの入力を求めてから実行し、暗号化されたファイルを取得します。これを行う方法はわかりません。暗号化されたファイルと共にサーバーにキーを保存したくないので、パスフレーズのユーザー入力が必要です。 いくつかの異なる方法を検討していますが、ファイルを復号化せずに、暗号化されていないファイルを取得し、後で削除します。スクリプトに問題が発生した場合に、暗号化されていないファイルが残る可能性を減らしたいと思います。 この方法でそれを調達するファイルのGPG出力を取得する方法はありますか?STDOUTを収集して解析する可能性があります(GPGがコンテンツをこのように出力できる場合)。 また、シェルスクリプトが使用できるファイルを暗号化する別の方法がある場合、私はそれを認識していませんが、他の可能性を開いています。


5
プログラムでawkフレーバーを検出する方法(gawkとnawkなど)
私は基本的にbashシェルスクリプトのコレクションであるコマンドラインアプリケーションを使用しています。アプリケーションは、BSD / OSXおよびLinuxで実行するように作成されました。スクリプトの1つはawkに依存しています。これには2つのawkコマンドが含まれています。1つはnawk(標準のBSD awk実装)用に記述され、もう1つはgawk(GNU awk実装)用に記述されています。 問題の2つのawkコマンドは、異なる環境との互換性がありません。特に、gawkで実行するとnawkコマンドが失敗します。スクリプトは、uname -sホスト環境を判別するためにカーネル名(つまり)をチェックし、適切なawkコマンドを実行します。ただし、GNUコアユーティリティがインストールされたMac OS Xで作業することを好むため、スクリプトは正しく実行されません。 このバグを修正する最善の方法を考える過程で、できれば比較的堅牢で移植性のある方法で、一般的なコマンドラインユーティリティの異なるフレーバーをプログラムで区別する方法を知っておくとよいと思いました。 nawkがバージョン情報を出力するための「-V」フラグを受け入れないことに気付いたので、次のようなものが機能するはずだと考えました。 awk -V &>/dev/null && echo gawk || echo nawk 別のバリエーションは次のとおりです。 awk -Wversion &>/dev/null && echo gawk || echo nawk これは私の2つのテスト環境(OS XとCentOS)で動作するようです。ここに私の質問があります: これは最善の方法ですか? これを拡張してawkの他のバリエーション(例:mawk、jawkなど)を処理する方法はありますか? awkの他のバージョンについても心配する価値がありますか? また、私はawkについてほとんど知らないことも述べておきます。

1
LinuxでのWindowsショートカットの作成
BashでWindowsショートカットファイル(.lnk)を作成することはできますか? いいえ、私はシンボリックリンクについて話していません... Samba共有にいくつかのWindowsショートカットを配置する必要があります。
8 bash  windows  samba 

1
gpg-agent-connectツールを使用してssh秘密鍵ファイルを再構築します
~/.ssh/id_dsaパスフレーズを忘れたため、自分のファイル(DSAアルゴリズムのOpenSSH秘密鍵ファイル)にアクセスできなくなりました。 しかし、もともと私はgpg-agentそれをgpg-agentパスフレーズにインポートして保護しましたが、これは私が知っています。そして、私は今でもgpg-agentOpenSSH秘密鍵ファイルをに保存されているものを使用して再構築したいと思っていますが、秘密鍵は今でも問題なく機能していgpg-agentます。 gpg-connect-agent次の一連のコマンドを使用してツールを使用すると、秘密鍵を(16進数/ ASCII形式で)抽出できると思いますが、元のOpenSSH秘密鍵ファイル形式に再構築する方法がわかりません。 起動しgpg-connect-agentて--hexオプション。 >プロンプトで、keyinfo --ssh-listコマンドを使用してキーの16進IDを取得します(正確には、キーの16進IDを示す3番目のフィールドです)。 で>プロンプト、実行keywrap_key --export。 >プロンプトで、export_key <enter hex ID from step 2>またはを実行しますexport_key --openpgp <enter hex ID from step 2>。 パスフレーズの入力を求め、受け取って確認すると、gpg-connect-agentツールは数十行の16進数とASCIIコードを表示します。これは、インポートされた元のssh秘密鍵であると思われます。 次に、が表示されOK、操作が成功したことを示しています。 それが実際に私のssh秘密鍵であると仮定すると(「help export_key」に従って、画面にダンプされたものは、鍵のaeswrap-128暗号化バージョンです;おそらく私の既知のgpg-agentパスフレーズで暗号化されています)、方法に関するいくつかのヘルプその情報を従来のssh秘密鍵形式に変換することは大歓迎です(これを行うためのperl / python / shell / Cプログラムはおまけです!)。
8 gpg-agent 

2
呼び出し側のシェルがsudoで使用されないようにする方法
CentOS 6.5でsudo-1.8.6を実行しています。私の質問は非常に単純です。SHELLがユーザーの環境からsudo環境に伝播するのを防ぐにはどうすればよいですか? 通常、人々は逆の方向に進んでいます-彼らは環境変数を保存したいのです。しかし、シェルが/sbin/nologinsudo経由でコマンドを実行しようとするユーザー「zabbix」という問題が発生しています。Sudoは/sbin/nologinrootがサブシェルを実行できないようにを維持しています。(更新:この部分は正しいですが、SHELL環境変数ではありません。問題となっているのは、/ etc / passwdからプルされているシェル値です。) 問題を説明するテストを含めます。これは実際の使用例ではありませんが、呼び出し元のユーザーのシェルが保持されていることを示しています。ユーザーとして実行するプログラムがありますzabbix。呼び出します/usr/bin/sudo -u root /tmp/doit(プログラミングzabbixはデーモンとして実行されるため/sbin/nologin、パスワードファイルのシェルはそれを妨げません)。/tmp/doit単純に以下を備えたシェルスクリプトです。 #!/bin/sh env > /tmp/outfile (そのモードは明らかに755です)。でそれoutfileを見ることSHELLができます/sbin/nologin。ただし、この時点では、スクリプトはsudoを介してrootとして実行されているため、前のユーザーの環境変数を含めないでください。 ここに私の/ etc / sudoersがあります: デフォルトは必須です デフォルト!visiblepw デフォルトalways_set_home デフォルトenv_reset デフォルトenv_keep = "COLORS DISPLAY HOSTNAME HISTSIZE INPUTRC KDEDIR LS_COLORS" デフォルトenv_keep + = "MAIL PS1 PS2 QTDIR USERNAME LANG LC_ADDRESS LC_CTYPE" デフォルトenv_keep + = "LC_COLLATE LC_IDENTIFICATION LC_MEASUREMENT LC_MESSAGES" …

1
`w`コマンドはアイドル時間と実行中のコマンドをどのように知るのですか?
このwコマンドは、誰が何をしてログインしているかについての一連の情報を表示します。 ウィキペディアの例: $ w 11:12am up 608 day(s), 19:56, 6 users, load average: 0.36, 0.36, 0.37 User tty login@ idle what smithj pts/5 8:52am w jonesm pts/23 20Apr06 28 -bash harry pts/18 9:01am 9 pine peterb pts/19 21Apr06 emacs -nw html/index.html janetmcq pts/8 10:12am 3days -csh singh pts/12 16Apr06 5:29 …
8 w 

2
ローカルストレージ、IMAP、新しいメールの即時プッシュでmuttを使用するにはどうすればよいですか?
muttメールに切り替えることを考えています。ただし、いくつかの要件があります。 メールをオフラインで保存できるようにしたいのですが。 定期的なポーリング(IMAP IDLEを使用するなど)ではなく、ローカルコンピュータにメールをすぐにプッシュしたいのですが。 オフラインストレージの場合は、imapofflineまたはを使用できますisync。後者はより安定していることを理解しています。ただし、メールをオンデマンドでプッシュするには、isyncで見つけた唯一のオプションはmswatchです。残念ながら、これにはリモート電子メールサーバーにプログラムをインストールする必要がありますが、これは不可能です。muttオフラインのメールストレージとインスタントメール配信で、を使用できるソリューションはありますか?
8 email  mutt 

4
gnome-terminalが機能しなくなった
私は、gnome-terminal 3.16.2-1システムのアップデート後に動作を停止しました。私は走っていLinux arch 4.1.6-1-ARCH #1 SMP PREEMPT Mon Aug 17 08:52:28 CEST 2015 x86_64 GNU/Linuxます。 それを起動するとき、私は受け取ります Error constructing proxy for org.gnome.Terminal:/org/gnome/Terminal/Factory0: Error calling StartServiceByName for org.gnome.Terminal: GDBus.Error:org.freedesktop.DBus.Error.Spawn.ChildExited: Process org.gnome.Terminal exited with status 8 問題をグーグルすると、ロケール設定を再設定するように言われました。そのために私は開いて/etc/locale.gen、それen_US.UTF-8 UTF-8がコメントされていないことを確認しました。 その後、実行sudo locale-genしてロケールを生成しました。さらに、私は実行localectl set-locale LANG=en_US.UTF-8して再起動しました。 問題が最初に発生したとき、ロケールに関するエラーメッセージを受け取りました。前の手順を実行した後、これらのエラーメッセージは消えましたが、gnome-terminalまだ機能しません。上記のエラーメッセージは残ります。 そうでなければ観察できる奇妙な行動: Nautilusファイルマネージャはデスクトップショートカットから起動しませんが、コンソールから問題なく起動します。 gnome-terminal ルートとして実行すると起動します。 locale 出力: LANG=en_US.UTF-8 LC_CTYPE="en_US.UTF-8" LC_NUMERIC=de_DE.UTF-8 LC_TIME=de_DE.UTF-8 …

1
aptによる最新のclang 3.8のインストール方法
ここで私はclang3.8をインストールする方法の指示を見つけました:http ://llvm.org/apt/ だから私は実行しました: wget -O - http://llvm.org/apt/llvm-snapshot.gpg.key|sudo apt-key add - 結果: --2015-09-19 12:53:09-- http://llvm.org/apt/llvm-snapshot.gpg.key Resolving llvm.org (llvm.org)... [sudo] password for user: 192.17.58.186 Connecting to llvm.org (llvm.org)|192.17.58.186|:80... connected. HTTP request sent, awaiting response... 200 OK Length: 3145 (3,1K) [application/pgp-keys] Saving to: ‘STDOUT’ 100%[======================================>] 3.145 --.-K/s in 0,002s 2015-09-19 12:53:10 (1,87 MB/s) …
8 linux-mint  apt  clang 

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