Unix & Linux

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

2
ソートがソート順を知らない場合のGNUソート安定ソート
2列のファイルがあります。ファイルは既に列1で希望どおりにソートされています。各列1カテゴリ内の列2で並べ替えたいと思います。ただし、sort列1のソート順を理解していません。 通常の方法(スタック上の同様の質問から)はこれです: sort --stable -k1,1 -k2,2n しかし、k1は任意なのでソートを指定できません。 入力例: C 2 C 1 A 2 A 1 B 2 B 1 および出力: C 1 C 2 A 1 A 2 B 1 B 2
18 sort 

1
シェルで$ {$#}が$$と同じ結果を返すのはなぜですか?
最後の定位置パラメーターを設定しようとしている間に/bin/dash、試しましたecho ${$#}。驚いたことに、これはエラーにならず、$$変数の内容と同じPIDになりました。質問、なぜその構文が機能したのですか?ここでシェルが適用した構文規則は何ですか? 基本的に、私がしたことは $ set 1 2 3 4 5 $ echo ${$#} 13819 $ echo $$ 13819 どうやら、%文字もそのような構成では無視されます $ echo ${$%} 13819 しかし、*と@悪い置換誤りが発生: $ echo ${$*} sh: 10: Bad substitution $ echo ${$@} sh: 11: Bad substitution
18 shell  variable 

2
`disown -h`と` nohup`は同じように機能しますか?
disown シェルが終了したときに、シェルが非所有のジョブにSIGHUPを送信しないようにします。 否認されたジョブをシェルのジョブ制御から削除します。 最初は2番目の結果ですか?言い換えると、シェルから開始されたプロセスが何らかの方法でシェルのジョブ制御から削除された場合、シェルは終了時にSIGHUPをプロセスに送信しませんか? disown -h シェルのジョブ制御下でプロセスを維持します。これdisown -hは、プロセスがシェルから送信されたSIGHUPを引き続き受信するが、プロセスによるSIGHUPのアクションを「無視」するように設定するということですか?それはに似ていnohupます。 $ sleep 123 & disown -h [1] 26103 $ jobs [1]+ Running sleep 123 & $ fg 1 sleep 123 $ ^Z [1]+ Stopped sleep 125 $ bg 1 [1]+ sleep 123 & $ exit $ ps aux | grep sleep t …
18 bash  nohup  disown 

2
POSIXが特定のシェルビルトインで外部実装を必要とするのはなぜですか?
printfがyashの組み込みであるかどうかに関するこの質問から、POSIX標準を引用するこの答えが出てきます。 答えは、POSIX検索シーケンスは目的のコマンドの外部実装を見つけ、シェルがそれを組み込みとして実装している場合、組み込みを実行することであると指摘しています。(特別なビルトインではないビルトインの場合) POSIXには、内部実装の実行を許可する前に、外部実装が存在するというこの要件があるのはなぜですか? それは... arbitrary意的だと思うので、私は興味があります。

1
ディスクがいっぱいになるまで、「tar」を「dd」にパイプするのが止まらないのはなぜですか?
単一のディスクイメージのtarアーカイブがあります。このtarファイル内の画像のサイズは約4GBです。Iパイプの出力tar xfにddSDカードにディスクイメージを書き込みます。ディスクダンプは、カードがいっぱいになるまで停止しません。これが私のシェルセッションです。 $ ls -l disk.img.tgz -rw-r--r-- 1 confus confus 192M Okt 5 00:53 $ tar -tvf disk.img.tgz -rw-r--r-- root/root 4294968320 2018-10-05 00:52 disk.img $ lsblk -lb /dev/sdc NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sdc 8:32 1 16022241280 0 disk $ tar zxf disk.img.tgz -O | sudo dd status=progress …
18 pipe  tar  dd  disk-image 

3
このtrコマンドのドットは何をしますか:tr…AZ A-ZA-Z <<<“ JVPQBOV”(13ドットあり)
trrot13変換を行うために使用したいと思います。私はこのコマンドを美しく理解できます: tr A-Za-z N-ZA-Mn-za-m &lt;&lt;&lt; "URYC ZR CYRNFR" どの出力がですがHELP ME PLEASE、この他のコマンドがどのように同じrot13変換を生成するかはわかりません。 tr .............A-Z A-ZA-Z &lt;&lt;&lt; "URYC ZR CYRNFR" そこで、2つの質問があります。 2番目のtrコマンドの背後にある魔法は何ですか? 最初のコマンドと同様に、2番目のコマンドを小文字と大文字の両方で機能させるにはどうすればよいですか?
18 tr 

1
カーネルでコンパイルされた(ロードされていない)カーネルモジュールを無効にする
私のサーバーには2つの1ギガビットと10ギガビットのオンボードネットワークカードがあります。 1ギガビットネットワークカードを完全に無効にする必要があるため、ifconfig -a表示されません。 ネットワークカードは異なるカーネルモジュールを使用します。10ギガビットの使用ixgbe、および1ギガビットの使用igb。 01:00.1 Ethernet controller: Intel Corporation 82599ES 10-Gigabit SFI/SFP+ Network Connection (rev 01) Subsystem: Dell Ethernet 10G 4P X520/I350 rNDC Kernel driver in use: ixgbe 05:00.1 Ethernet controller: Intel Corporation I350 Gigabit Network Connection (rev 01) Subsystem: Dell I350 Gigabit Network Connection Kernel driver in use: igb …


1
Ubuntu 18.04でGitKrakenが起動しなくなりました
昨日、Ubuntu 18.04の電源を入れてGitKrakenを起動しようとしたときに、機能しませんでした。アイコンをクリックすると、プロセスが左上隅(「アクティビティ」の隣)で開始しようとするのがわかりますが、数秒後にプロセスが停止したように見え、何も起こりません。コンソールからGitKrakenを起動しようとすると、次の2つのメッセージが表示されて失敗します。 /snap/gitkraken/58/bin/desktop-launch: line 23: $HOME/.config/user-dirs.dirs: Permission denied ln: failed to create symbolic link '$HOME/snap/gitkraken/58/.config/gtk-2.0/gtkfilechooser.ini': File exists 残念ながら、私のLinuxスキルはこれを解決するにはあまりにも制限されています。私が試した唯一のことはchmod 777 $HOME/.config/user-dirs.dirs理由のためですがPermossion denied、それは助けにはなりませんでした。 編集:terdonが私が行った彼のコメントで示唆したように、ls -ld ~/.config/user-dirs.dirsこれはその出力です: -rwxrwxrwx 1 myusername myusername 633 Mai 6 10:30 /home/mayusername/.config/user-dirs.dirs 次に、mv ~/snap/gitkraken/58/.config/gtk-2.0/gtkfilechooser.ini gtkfilechooser.ini.bakコマンドを作成し、その後GitKrakenを開始しようとしました。私は再び表示を開始しませんでした: /snap/gitkraken/58/bin/desktop-launch: line 23: /home/myusername/.config/user-dirs.dirs: Permission denied ln: failed to create symbolic link ...最初の投稿からのエラーは表示されませんでした。エグゼcuting llディレクトリには、~/snap/gitkraken/58/.config/gtk-2.0私に次のような出力が得られます。 …


5
印刷にとってスプールとはどういう意味ですか?
マークが私にコメントを書いた カップをスプールではなく、つまり、プリンタードライバーが実行された後にのみlprコマンドを終了させる方法を知らない。 印刷用の「スプール」とはどういう意味ですか? Googleは、「中間ストアに送信する(周辺機器での印刷または処理を目的としたデータ)」という意味の動詞だと言います。lprコマンドで印刷する場合など、印刷スプールが表す中間ストアとは何ですか マークは、スプールの意味とブロッキングを関連付けているようです。しかし、Googleが提供する定義を見てもわかりません。 ありがとう。
18 printing  cups  lpr 

3
Linuxでfakerootはどのようにセキュリティ違反ではないのですか?
この質問からいくつかの非常に良い答えを読んだ後、私はあなたが実際にルートになることの利点を得ることなくあなたがルートであるふりをしたい理由についてまだあいまいです。 これまでのところ、fakerootを使用して、unzip / tarされたときにルートである必要があるファイルに所有権を与えるということを収集できます。私の質問は、なぜあなたはchownでそれができないのですか? ここでのGoogleグループの議論では、Debianカーネルをコンパイルするにはfakerootが必要であることが指摘されています(特権のないユーザーからそれをしたい場合)。私のコメントは、コンパイルするためにrootになる必要があるのは、おそらく他のユーザーに読み取り権限が設定されていないからだと言っています。もしそうなら、fakerootがコンパイルを許可するセキュリティ違反ではありません(つまり、gccはroot用のファイルを読み取ることができます)? ここでのこの回答は、実際のシステムコールがユーザーの実際のuid / gidを使用して行われることを示しています。 Linuxでfakerootはどのようにして不要な特権エスカレーションを阻止しますか?fakerootがtarをだましてrootが所有するファイルを作成できる場合、SUIDで同様のことをしてみませんか? 私が集めたものから、rootにビルドしたパッケージファイルの所有者を変更する場合、fakerootが便利です。しかし、あなたはchownでそれを行うことができますので、このコンポーネントがどのように使用されるべきであるかについての私の理解のどこに欠けていますか?
18 linux  chown  fakeroot 

5
ポート3000で実行されているプロセスの追加情報なしでPIDのみを取得するにはどうすればよいですか?
CentOS 7を使用しています。ポート3000で実行されているプロセスのPID(存在する場合)を取得します。シェルスクリプトの変数に保存する目的でこのPIDを取得したいと思います。これまでのところ [rails@server proddir]$ sudo ss -lptn 'sport = :3000' State Recv-Q Send-Q Local Address:Port Peer Address:Port Cannot open netlink socket: Protocol not supported LISTEN 0 0 *:3000 *:* users:(("ruby",pid=4861,fd=7),("ruby",pid=4857,fd=7),("ruby",pid=4855,fd=7),("ruby",pid=4851,fd=7),("ruby",pid=4843,fd=7)) しかし、この追加情報なしでPIDを単独で分離する方法はわかりません。

5
不安定なSSH接続を自動的に再開するための画面など
信頼性の低いwifi環境では、sshを介してサーバーに接続する必要があることがよくあります。サーバーで画面を実行するので、切断された場合は、再接続して画面セッションを再開し、中断したところから再開できますが、接続の喪失は依然として大きなタイムシンクです:接続が途切れた場合サーバー上では、ターミナルウィンドウがフリーズする傾向があります。そのタブを強制終了し、新しいタブを開き、サーバーに再度sshして、画面セッションを再開する必要があります。サーバー上で画面を実行し、ローカルで画面でこれを試しました。いずれにせよ、接続が切れるとフリーズする傾向があります。 画面に似たもの、または画面自体を自動的に再接続してセッションを実行しようとする方法があるので、手動で再接続し続ける必要はありませんか?多くの場合、接続を失ったとき、それは非常に短い期間だけだと思います-1秒未満かもしれません。 Ubuntu 14.04 LTS、MATEエディションを使用しています。ありがとう

4
「引数をコマンドとして解釈するコマンドに信頼できないデータを渡すコマンドを実行する」
findutilsのマニュアルより: たとえば、これらの2つのコマンドなどの構成体 # risky find -exec sh -c "something {}" \; find -execdir sh -c "something {}" \; 非常に危険です。この理由は、「{}」がファイル名に展開されるためです。ファイル名には、シェルに特殊なセミコロンまたはその他の文字が含まれる場合があります。たとえば、誰かがファイルを作成した場合、 /tmp/foo; rm -rf $HOME上記の2つのコマンドは誰かのホームディレクトリを削除できます。 したがって、このため、引数をさらに解釈されるコマンドとして解釈するコマンド(たとえば、「sh」)に信頼できないデータ(ファイル名など)を渡すコマンドを実行しないでください。 シェルの場合、この問題に対する巧妙な回避策があります。 # safer find -exec sh -c 'something "$@"' sh {} \; find -execdir sh -c 'something "$@"' sh {} \; このアプローチは、すべての問題を回避することを保証するものではありませんが、攻撃者が選択したデータをシェルコマンドのテキストに置き換えるよりもはるかに安全です。 find -exec sh -c …
18 shell 

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