Unix & Linux

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


2
なぜPOSIX Shell Grammarの開始中括弧の後に中括弧コマンドグループにスペースが必要なのですか?
TL; DR:POSIXブレースグループで{予約語の後にスペースが必要なのに、サブシェルでは予約語の後にスペースがないのはなぜ(ですか? POSIXシェル文法は、ブレースグループとサブシェルを次のように定義します brace_group : Lbrace compound_list Rbrace subshell : '(' compound_list ')' 今、それを文字通り読んでいる場合、スペースは重要です。これは、次のように開き中括弧と括弧を区切るスペースが必要であることを意味します { echo hello world; } ( echo hello world ) これは、複合コマンドの定義とも一致します。 これらの複合コマンドのそれぞれには、最初に予約語または制御演算子があり、最後に対応するターミネーター予約語または演算子があります。 ただし、意味がないのはなぜか(list)、問題なく機能する( list )(その後ろのスペース(は不要)が、ブレースの展開には先行スペースが必要である、つまり機能{echo hello;}しないためである。 もちろん、予約語がシェルワードとして扱われると、フィールド分割の概念に合わせるために後でスペースが必要になりますが、定義自体はスペースについて言及していません。さらに、複合コマンドのPOSIX定義で両方が予約語と見なされている場合{、(これらの予約語の後のスペース文字に関して、それらの扱いが異なるのはなぜですか?現在、ksh(1)のマニュアルには次のように記載されています。 文字のシーケンスである単語は、引用符で囲まれていない空白文字(スペース、タブ、および改行)またはメタ文字(<、>、|、;、&、(および))で区切られます。 言い換えると、kshが(最初の単語がコマンドまたは変数の割り当てである単語の区切り文字として認識することは理にかなっています。ただし、POSIXは(メタ文字として言及されていないようです。POSIX文法に関して私が見つけた唯一の可能な説明{は、「トークン」と見なさ(れるというものです。 /* These are reserved words, not operator tokens, and are recognized when reserved words are recognized. */ …
10 shell  posix  subshell  syntax 

3
`/ etc / hosts`とDNSはどのように連携してホスト名をIPアドレスに解決しますか?
Linuxでは、/etc/hostsDNS はどのようにしてホスト名をIPアドレスに解決するのですか? でホスト名を解決できる場合、/etc/hostsDNS /etc/hosts はホスト名を解決した後に適用されますか、または解決されたIPアドレスを/etc/hosts「ホスト名」として処理して 再帰的に解決しますか? 私のブラウザー(firefoxとgoogle chrome)で、私がに追加すると /etc/hosts: 127.0.0.1 google.com www.google.com ブラウザのアドレスバーにwww.google.comと入力してEnterキーを押すと、Webサイトに接続できません。からその行を削除/etc/hostsすると、Webサイトに接続できます。/etc/hostsホスト名を解決するためにDNSをオーバーライドするということですか? に行を再度追加した/etc/hosts後も、Webページを更新した後でも、Webサイトに接続できます。/etc/hosts再度申請しない ので、ウェブサイトに接続できません。 ありがとう。

1
日付コマンドから3文字の曜日名を取得する
date +%b 現在の月の名前の3文字の省略形を教えてくれます(オンラインで見つけたので、私の中にはありman dateませんman date。また、この質問に対する答えをmy で見つけることはできません)。 当日の名前を取得するにはどうすればよいですか?例:日、月、火など。


2
sudoeditが一時ディレクトリに書き込むのはなぜですか?
私は以前sudoeditファイルを作成していました: $ sudoedit /etc/systemd/system/apache2.service しかし、ファイルを保存しようとすると、一時ディレクトリ(/ var / temp / blahblah)に書き込まれました。何が起こっている?システムディレクトリに保存されないのはなぜですか?
10 sudoedit 

2
32ビットのカーネルで64ビットのユーザーランドソフトウェアを実行するには何が必要ですか?
LinuxとWindowsでは、32ビットと64ビットのソフトウェアを並行して実行できるmultiarch / WoWを備えたシステムを64ビットのカーネルが必要とする状況に慣れています。 そして、何年か前に、誰かがMacOS 10.6 Snow Leopardが32ビットモードのカーネルで64ビットアプリケーションを実行できることを示したとき、それは私の心を驚かせました。これは、1回限りの技術移行だったため、今ではほとんど忘れられている可能性があります。モバイルスペースの最先端を行くハードウェアで、私の知る限り、これはiOSおよびAndroidの64ビットへの移行では必要ありませんでした。 私の質問:32ビットLinuxカーネル(i386またはarmhf)で同じ機能を得るには何が必要ですか? これはおそらく簡単ではないことを理解しています。もしそうなら、Microsoftはこの機能をWindows XP 32-bitに組み込んだ可能性があります。一般的な要件は何ですか?パッチまたは概念実証が提案されたことはありますか? 組み込みの世界では、64ビットのサポートがデバイスドライバーで長時間遅れることがあるので、これは特に役立つと思います。

1
macOS Mojaveディレクトリの権限
MacOS Mojaveは、SIPの効果をユーザーのホームディレクトリに拡張しました。デフォルトでは、ユーザーのホームディレクトリ内の多くのディレクトリへのアクセスは拒否されます。これらのディレクトリのいくつかの例を以下に示します。 ~/Library/Messages ~/Library/Mail ~/Library/Safari [… etc.] ターミナルからこれらのディレクトリにアクセスするには、システムアプリケーション>セキュリティとプライバシー>プライバシー>フルディスクアクセスでターミナルアプリケーションを定義する必要があります。システムの次のディレクトリを除いて、設定は機能します。同じ動作がコンテナ内の他のデータに存在する可能性があります-確かではありません。 ~/Library/Containers/com.apple.mail/Data/DataVaults 興味深い動作は簡単に再現できます。ディレクトリも表示されません。 cd ~/Library/Containers/com.apple.mail/Data ls ls: DataVaults: Operation not permitted 私はrsync自分のホームディレクトリを外部ハードドライブにミラーリングするために使用しています。しかし、rsync「IOエラーが発生しました-ファイルの削除をスキップします。この問題に関するドキュメントは見つかりません。Appleのサポートはまったくわかりません。このディレクトリが特別なのはなぜですか。SIPを無効にせずにディレクトリにアクセスするにはどうすればよいですか。 SIPを無効にした場合の詳細調査の結果 システム情報によると、Mojaveのアップグレードは2018年9月24日に行われました。ディレクトリも同じ日に作成されました。私のユーザーはディレクトリを所有し、スタッフグループはグループの所有者です。権限は0700 @です。記号で示されているように、拡張属性があります。ACLはありません。フラグはありません。 xattr -l ~/Library/Containers/com.apple.mail/Data/DataVaults com.apple.quarantine: 0082;00000000;Mail; com.apple.rootless: Mail ls -lO DataVaults (no result; exit 0) SIPを無効にし、ディレクトリを削除し、SIPを再度有効にすると、メールが開かれるとすぐに、ディレクトリは同じ権限で再表示されます。メール(バージョン12.0(3445.100.39))にはプラグインがありません。 2018年10月16日の新規インストールの結果 フォーマットして再インストールした後、ディレクトリは存在しません。それがどのようにして始まったのか、私にはまだ手がかりがありません。 2019年3月29日のアップグレードの結果 ディレクトリは、Mojave 10.14.4(18E226)および/またはMailバージョン12.4(3445.104.8)へのアップグレードと同時に再出現しました。
10 permissions  osx 

3
Debianのsddmで電源オフと再起動ボタンを無効にするにはどうすればよいですか?
私が試したこと:次の内容のファイルを作成しました/etc/sddm/sddm.conf(これも試しました/etc/sddm.conf)。 [General] HaltCommand=true RebootCommand=true 残念ながら、それは役に立ちませんでした-再起動ボタンは機能し続けました。できれば、ボタンも削除する必要があります。 編集:私はtrueブール値として解釈されることを期待していないことを明確にしたいと思います、それはコマンドとして解釈されることを期待しています。そして、true実行可能があるので、有効なコマンドで/bin/true終了ステータスの成功を返す以外何もしないほとんどのLinuxシステムでは。これがパスの問題ではないことを確認するためだけに、それも/bin/true役に立たないように設定してみました。
10 debian  sddm 

3
ターミネーター設定メニューを尋ねる方法は?
私はターミネーターの大ファンです。デフォルトでは、端末を右クリックして設定メニューにアクセスできます。ターミネーターを構成して、右クリックでコピー貼り付けを行うようにしました(Puttyと同様)。 残念ながら、それによって設定メニューにアクセスできなくなります。解決策は何ですか?

3
.ssh / configホストは複数のHostNameエントリを持つことができますか?
家にいないときにホームネットワーク上のコンピューターにSSHで接続できるように、sshとルーターのポート転送を設定しました。現在、.ssh/configファイルに2つのエントリがあり、1つはホームネットワークに接続しているとき、もう1つは接続していないときです。 Host mycomputer HostName 192.168.X.X Host mycomputerathome HostName my.no-ip.dynamic これは機能しますが、自分でもっと簡単にできるかどうか疑問に思っています。複数のHostNameエントリを一覧表示して、最初のエントリが失敗した場合に2番目のエントリにフォールバックする方法があることを望んでいました。 Host mycomputer HostName 192.168.X.X HostName my.no-ip.dynamic 最初にローカルネットワーク上のホストへの接続を試み、それが存在しない場合は、no-ip動的ホスト名を使用して接続を試みます。2つのHostNameを入力してみましたが、実行しているssh mycomputerだけでは何もしません。 キーを優先してパスワード認証をオフにしたので、ホームネットワークに接続していないときにローカルネットワーク上のコンピューターに誤って接続しても、パスワードが実行されない場所に移動する危険はありません。 最初のホスト名が機能しない場合に、代替のホスト名を指定して試すことはできますか?
10 ssh 

1
nohupバックグラウンドプロセスが停止しているのはなぜですか?
コマンドを使用してバックグラウンドでプロセスを開始するリモートセッションを介してシェルスクリプトを開始してみました。 nohup python3 run.py > nohup.out & リモートセッションが閉じられると、プロセスは次のメッセージで強制終了されます。 シグナルSIGHUPをキャッチしました SIGHUPはキャッチされましたが、デーモン化されていません。終了します。 わかりません。nohup&を使用してバックグラウンドで開始したときにプロセスが強制終了されるのはなぜですか?

4
「sudo」はどのユーザーのパスワードを要求しますか?
$ ls -l /usr/bin/sudo -rwsr-xr-x 1 root root 136808 Jul 4 2017 /usr/bin/sudo そのためsudo、すべてのユーザーが実行でき、実行するすべてのユーザーはsudo、set-user-idビット/usr/bin/sudoが設定されているため、プロセスの実効ユーザーIDとしてrootを持ちます。 https://unix.stackexchange.com/a/11287/674から sudoとsuの最も明白な違いは、sudoはユーザーのパスワードを必要とし、suはrootのパスワードを必要とすることです。 どのユーザーのパスワードがsudo要求しますか?プロセスの実際のユーザーIDで表されるユーザーですか? はいの場合、実行sudoしてから自分のパスワードを入力することで、どのユーザーもスーパーユーザー権限を取得できますか?Linuxは一部のユーザーに対してそれを制限できますか? それはそれが正しいsudoパスワードを要求した後に execve()実行を開始するmain()の/usr/bin/sudo? プロセスのeuidがrootに変更されたため(/ usr / bin / sudoのset-user-idビットが設定されているため)、後でsudoがパスワードを要求するポイントは何ですか? ありがとう。 https://unix.stackexchange.com/a/80350/674を読みましたが、上記の質問には答えません。

3
KDEグローバルメニューはプラズマ5.12で消えました
プラズマ5.12にアップグレードすると、グローバルメニューが表示されなくなり、設定のエントリ(アプリケーションスタイル->ウィジェットスタイル->微調整)も表示されなくなりました。 〜/ .configおよび〜/ .kdeフォルダー全体からプラズマ*ファイルを削除しようとしましたが、構成が間違っている可能性があると考えましたが、どれも役に立ちませんでした。
10 kde  kde5  plasma5  appearance 

3
systemdの積極的な緊急シェルの動作を無効にする方法は?
デフォルトでは、systemdはわずかなエラーで緊急シェルにドロップします。たとえば、何らかの理由でfstabのマウントの1つが失敗した場合、システムはすぐに起動できなくなります。私は何十もの多様な本番システムを管理していますが、この動作は非常に有害であることがわかりました。(実際には、これは重大な設計の失敗だと思いますが、それは個人的な意見です)。 システムのブート回復力を増やしたいのですが。与えられたエラーによってコンソールへのログインが完全に不可能にならない限り、システムは常に起動し、欠落しているドライバーやマウントなどが緊急シェルを落とさない(代わりに警告を表示する)のが最適です。何を実行できるか、実行する必要があります。 systemdが/ etc / fstabから* .mountファイルを自動的に生成し、小さなx-systemd.deviceタイムアウトでnofailオプションを使用できることを知っています(または関連する.mountファイルを自分で定義します)。しかし、それは私の問題を解決しません。システムをより回復力のあるものにしたいので、毎回fstabを「パッチ」するのはあまり便利ではありません。一部の開発者は、それが十分に重要であると考えました。 ソートでは、マシンの制御を取り戻したいので、systemdに、ブートプロセスをクラッシュさせるほど深刻な問題を決定させないようにします。出来ますか?

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