Unix & Linux

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

7
このUnixソケットペアのもう一方の端は誰ですか?
UNIXソケットのもう一方の端があるプロセスを判別したい。 具体的には、で作成されたものについて尋ねてsocketpair()いますが、問題はどのUNIXソケットでも同じです。 、およびparentを作成するプログラムがあります。親プロセスは閉じて、通信を続けます。子供は反対のことをします。次に、子は別のプログラムを実行します。2人は、このソケットペアを介して相互に通信できます。socketpair(AF_UNIX, SOCK_STREAM, 0, fds)fork()fds[1]fds[0]close(fds[0]); s=fds[1]exec()child1 さて、私は誰parentが知っているとしましょうが、私は誰が誰かを知りたいと思いchild1ます。どうすればいいですか? 私が自由に使えるツールはいくつかありますが、どのプロセスがソケットの反対側にあるのかを知ることはできません。私が試してみました: lsof -c progname lsof -c parent -c child1 ls -l /proc/$(pidof server)/fd cat /proc/net/unix 基本的に、2つのソケットとそれらに関するすべてを見ることができますが、それらが接続されていることはわかりません。親のどのFDがどの子プロセスと通信しているかを判断しようとしています。

11
ファイルをインプレースで変更する方法はありますか?
かなり大きなファイル(35Gb)があり、このファイルをその場でフィルター処理したい(つまり、別のファイル用に十分なディスク容量がない)、特にgrepを行い、いくつかのパターンを無視したい-方法はありますか別のファイルを使用せずにこれを行いますか? foo:たとえば、以下を含むすべての行を除外したいとしましょう...


3
Systemd Restart = alwaysは尊重されません
注:Mediumで、サービスの作成方法と、この特定の問題を回避する方法を説明した記事を書きました:systemdを使用したLinuxサービスの作成。 元の質問: systemdを使用して、常にワーカースクリプトを動作させています。 [Unit] Description=My worker After=mysqld.service [Service] Type=simple Restart=always ExecStart=/path/to/script [Install] WantedBy=multi-user.target 数分後にスクリプトが正常に終了した場合、再起動は正常に機能しますが、起動時に繰り返し実行に失敗すると、起動systemdしようとしてあきらめます。 Jun 14 11:10:31 localhost systemd[1]: test.service: Main process exited, code=exited, status=1/FAILURE Jun 14 11:10:31 localhost systemd[1]: test.service: Unit entered failed state. Jun 14 11:10:31 localhost systemd[1]: test.service: Failed with result 'exit-code'. Jun 14 11:10:31 localhost systemd[1]: …
54 systemd 


2
UEFIを使用して起動しているかどうかを知る方法は?
検索していましたが、GRUBがシステムブートでUEFIを使用しているか、BIOS互換モード、または本格的なBIOSを使用しているかを知る明確な方法が見つかりませんでした。Windowsのメソッドのみを見つけました。UEFI、EFI、またはBIOSを使用しているかどうかを示すGRUBまたはカーネルブートログに何かありますか?
54 boot  grub2  uefi 


2
extundeleteを使用して、ext4で削除されたばかりのファイルの削除を取り消します
extundelete削除した/var/tmp/test.isoばかりのファイルの削除を取り消す方法について、簡単なオプションはありますか? (ドライブを読み取り専用などで再マウントし始めることはそれほど重要ではありません。そのファイルを再度ダウンロードすることもできます) 私はそれをなんとか回復させることができれば試せる簡単なコマンドを探しています。 ドライブを読み取り専用で再マウントすることで可能です:(削除したばかりの空のディスク上の唯一のファイルを回復するにはどうすればよいですか?を参照) しかし、これはまだマウントされているディスクでも何らかの形で可能ですか?

10
インデントしながら複数行にわたって変数に文字列値を割り当てる方法は?
問題: 変数に適切な長さの値を割り当てる必要があります。 スクリプトのすべての行は、特定の列数の下になければなりません。 そのため、複数の行を使用して割り当てようとしています。 インデントなしで行うのは簡単です: VAR="This displays without \ any issues." echo "${VAR}" 結果: This displays without any issues. ただし、インデントがある場合: VAR="This displays with \ extra spaces." echo "${VAR}" 結果: This displays with extra spaces. これらのスペースなしでどのようにエレガントに割り当てることができますか?
54 variable 

6
2つの変数を下線で連結する
2つの変数を連結して、アンダースコアを持つファイル名を作成する必要があります。変数$FILENAMEを呼び出して$EXTENSION、ファイルからファイル名を読み取ることができます。 FILENAME=Hello EXTENSION=WORLD.txt 今... 私は次のことを試みましたが成功しませんでした: NAME=${FILENAME}_$EXTENSION NAME=${FILENAME}'_'$EXTENSION NAME=$FILENAME\\_$EXTENSION 私はいつも何らかの奇妙な出力を取得します。通常、最初にアンダースコアが使用されます。 私はそれが必要です echo $NAME Hello_WORLD.txt

4
プロセスが終了したときのデフォルトの終了コード?
SIGINTまたはのようなハンドル可能なシグナルでプロセスが強制終了されたSIGTERMが、シグナルを処理しない場合、プロセスの終了コードはどうなりますか? 次のようなハンドルできない信号はSIGKILLどうですか? 私が知ることができることから、SIGINTおそらくプロセスを終了すると終了コード130が発生しますが、それはカーネルまたはシェルの実装によって異なりますか? $ cat myScript #!/bin/bash sleep 5 $ ./myScript <ctrl-c here> $ echo $? 130 他の信号をテストする方法がわかりません... $ ./myScript & $ killall myScript $ echo $? 0 # duh, that's the exit code of killall $ killall -9 myScript $ echo $? 0 # same problem

5
最初と最後の行なしでファイルの内容を印刷する
最初と最後の行をスキップして、ファイルをエコーする簡単な方法はありますか?からheadにパイピングを検討していましたtailが、それらについては、最初から総ラインを知る必要があるようです。私も見ていましたがsplit、それでもそれを行う方法がわかりません。

7
マウントにルート権限が必要なのはなぜですか?
Linuxでは、何かをマウントするために、rootであるか、sudoを使用しているか、マウントごとに特別に許可されている必要があるのですか?ユーザーが何かをマウントできるようにするかどうかは、ソースボリューム/ネットワーク共有およびマウントポイントへのアクセス権に基づいて決定する必要があるようです。非ルートマウントのいくつかの用途は、ファイルシステムイメージをユーザーが所有する方向にマウントすることと、ネットワーク共有をユーザーが所有するディレクトリにマウントすることです。ユーザーがマウント方程式の両側を制御できれば、すべてがクールになるはずです。 アクセス制限の明確化: そうでなければ、ユーザーが所有者であるマウントポイントにアクセスできるユーザーなら何でもマウントできるはずです。 たとえば、私のコンピューターでは、/ dev / sda1はユーザーrootとグループディスクdiskに所有権がありbrw-rw----ます。したがって、非rootユーザーは/ dev / sda1を台無しにすることはできず、明らかにマウントを許可しないでください。ただし、ユーザーが/home/my_user/my_imagefile.imgとマウントポイント/ home / my_user / my_image /を所有している場合、次の方法でそのマウントポイントにそのイメージファイルをマウントできないのはなぜですか。 mount /home/my_user/my_imagefile.img /home/my_user/my_image/ -o loop kormacが指摘したように、suidの問題があります。したがって、suidが問題になるのを防ぐために、いくつかの制限を追加する必要があります。おそらくこれを行う1つの方法は、OSがすべてのファイルをマウントを行ったユーザーに属するものとして扱うようにすることです。ただし、単純な読み取り/書き込み/実行の場合、これが問題になる理由はわかりません。 使用事例: 自宅のスペースが8GBに制限されているラボにアカウントを持っています。これは小さく、非常に迷惑です。パーソナルサーバーからnfsボリュームをマウントして、必要なスペースを本質的に増やしたいと思います。ただし、Linuxではそのようなことが許可されていないため、8 GBの制限を超えないようにファイルをscpすることで行き詰まってしまいます。

5
区切り文字の最初の出現による文字列の分割
次の形式の文字列があります id;some text here with possible ; inside の最初の出現によって2つの文字列に分割したい;。だから、それは次のようになりますidし、some text here with possible ; inside 文字列を分割する方法は知っていますが(たとえば、cut -d ';' -f1)、;左部分の内側にあるため、より多くの部分に分割されます。

3
シェルスクリプトで環境変数を「エクスポート」する方法を教えてください。
複数のAmazon EC2アカウントがあり$EC2_HOME、スクリプトを使用してなどの変数をすばやく切り替えることができるようにしたいと考えています。 次のように設定されたシェルスクリプトがあります。 #!/bin/sh export EC2_HOME=/home/me/.ec2 echo $EC2_HOME スクリプトを実行すると、EC2_HOME設定されていることがわかりexportますが、スクリプトの完了後に変数を使用すると変数が固定されると考えました。実行echo $EC_HOMEしても何も表示されないため、表示されません。 これは非常に初歩的なLinuxスクリプティングの知識でなければならないことは知っていますが、知りません。私は運のない関連する質問を探してみた-これが重複している場合、私の謝罪。

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