Unix & Linux

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

3
シェルスクリプトをデーモンとして実行する「適切な」方法
daemontoolsやdaemonizeなどの外部ツールを使用せずに、起動時にデーモンとして実行したいシェルスクリプトを書いています。 Linux Daemon Writing HOWTO Linux Daemon Writing HOWTOによると、適切なデーモンには次の特性があります。 親プロセスからの分岐 クローズすべてのファイル記述子を(すなわち、stdin、stdout、stderr) 書き込み用のログを開きます(設定されている場合) 作業ディレクトリを永続的なものに変更します(通常/) ファイルモードマスク(umask)をリセットします 一意のセッションID(SID)を作成します デーモン化入門 デーモン化導入はまた、典型的なデーモンを述べ、さらに行きます: 制御端末(存在する場合)との関連付けを解除し、すべての端末信号を無視します プロセスグループとの関連付けを解除します ハンドル SIGCLD どのように私はこのすべてを行うだろうsh、dashまたはbash唯一の共通のLinuxツールとスクリプト? Debianは主な焦点ですが、スクリプトは追加のソフトウェアなしでできるだけ多くのディストリビューションで実行できるはずです。 注:またはの使用を推奨するStackExchangeネットワーク上の答えがたくさんあることは知っていますが、これらの方法はいずれも上記の要件のすべてに対応していません。nohupsetsid EDIT:デーモン(7)のmanページには、古いスタイルのいくつかの違いがあるように見えるが、また、いくつかのポインタを与えるSysVデーモンと新しいsystemdもの。さまざまなディストリビューションとの互換性が重要なので、答えが違いを明確にするようにしてください。

3
Bashは文字列を正当化するために末尾のスペースを追加します
私の現在のコードは次のようになります:x=${y:0:40}文字列の長さを40文字に制限します。文字列が40文字より短い場合、末尾の場所をスペースで埋めることは可能ですか? だから私の場合 y="very short text" 私のyになりたい: y = "非常に短いテキスト(+25末尾のスペース) "
20 bash 

4
LUKS暗号化パーティションを拡張してディスクをいっぱいにする
最近、ディスクを128GB SSDから512GB SSDにアップグレードしました。/パーティションはLUKSで暗号化されています。新しいディスクのすべての空き領域を使用するようにパーティションを拡張するためのヘルプを探しています。私はすでに古いドライブを新しいドライブに追加しました: [root@localhost ~]# fdisk -l /dev/sda Disk /dev/sda: 477 GiB, 512110190592 bytes, 1000215216 sectors Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 4096 bytes I/O size (minimum/optimal): 4096 bytes / 4096 bytes Disklabel type: dos Disk identifier: 0x00009f33 Device Boot Start …
20 filesystems  luks 

4
dirnameおよびbasename vsパラメーター展開
ある形式を他の形式よりも優先する客観的な理由はありますか?パフォーマンス、信頼性、移植性? filename=/some/long/path/to/a_file parentdir_v1="${filename%/*}" parentdir_v2="$(dirname "$filename")" basename_v1="${filename##*/}" basename_v2="$(basename "$filename")" echo "$parentdir_v1" echo "$parentdir_v2" echo "$basename_v1" echo "$basename_v2" 生産物: /some/long/path/to /some/long/path/to a_file a_file (v1はシェルパラメーター展開を使用し、v2は外部バイナリーを使用します。)

3
mysqlコマンドラインにパスワードを渡す方法
foo.phpたとえばP455w0rd、使用しようとすると、MySQLパスワードがファイルに保存されます。 $ cat foo.php | grep '$dbpwd=' | cut -d '"' -f 2 | mysql -U root -p mydb -h friendserver Enter password: (holds) $ echo P455w0rd | mysql -u root -p mydb -h friendserver Enter password: (holds) 両方のオプションはまだパスワードを要求しますが、パスワードを送信する正しい方法は何stdinですか?
20 password  mysql  stdin 

2
grepを使用して複数のネストされていないディレクトリを検索するにはどうすればよいですか?
この質問と同じことを求めているように聞こえるかもしれませんが、要件は異なります。これは私のファイルシステムの例です: /コード/ 内部/ dev / メイン/ 公衆/ dev / メイン/ リリース/ ツール/ /code/internal/dev/、/code/public/dev/および/code/tools/複数のプロジェクトのサブディレクトリが含まれます。私は/code/internal/とのdevブランチでほぼ独占的に仕事をしており/code/public/、それらのディレクトリで/code/tools/(ブランチのない)テキスト文字列を検索したいことがよくあります。これらのインスタンスでは、3つの個別のコマンドを実行する必要があります。 $ grep -r "some string" /code/internal/dev/ $ grep -r "some string" /code/public/dev/ $ grep -r "some string" /code/tools/ これを行う単一のコマンドがあるかどうかを知りたいです。そうでない場合は、おそらく単純なbashスクリプトを作成する必要があります。
20 grep  search 

4
sed / awkを使用して最初のスペースの後にあるものを削除する
aaaaaaaa 09 bbbbbbbb 90 ccccccccccccccc 89 ddddd 09 sed / awk / replaceを使用して、上記のテキストでは、各行の最初のスペースの後にあるすべてのものを削除します。たとえば、出力は次のようになります。 aaaaaaaa bbbbbbbb ccccccccccccccc ddddd 任意の助けをいただければ幸いです。
20 sed  grep  awk 


3
initramfsは/ etc / fstabを使用しますか?
私の理解では、initramfsは「実際の」ルートファイルシステムをロードする役割を担っています。 ここで、そのルートを定義する場所が2つあります。まず、エントリをに入れ/etc/fstabます。次に、デバイスをカーネルブートコマンドに配置しますroot=/dev/sda1。 ルートファイルシステムがどこにあるかを決定するために、initramfsはどれを使用しますか?ルートカーネルパラメーターを使用する場合、なぜエントリがあり/etc/fstabますか?2番目のオプション(読み取り/etc/fstab)は、/etc/fstabファイルがinitramfsが最初にマウントしようとしている非常にルートデバイス上にあるため、まったく非論理的です。 非常に紛らわしいもの。
20 boot  fstab  initramfs 


2
E:Debian jessie簡易Dockerコンテナでパッケージvimが見つかりません
jessieを実行しているDebianドッカーコンテナー内から vi blah bash: vi: command not found 当然のことながら、インストールコマンドにアクセスします sudo apt-get install vim Reading package lists... Done Building dependency tree Reading state information... Done E: Unable to locate package vim いくつかの牽引力を探しているときに、さまざまな出力でこれらの提案に出会いました cat /etc/apt/sources.list deb http://deb.debian.org/debian jessie main deb http://deb.debian.org/debian jessie-updates main deb http://security.debian.org jessie/updates main apt-get install software-properties-common Reading package …
20 debian  apt 

4
ワイヤレスアクセスポイントを作成し、nmcliとインターネット接続を共有します
コマンドラインツールでWi-Fiホットスポットを作成nmcliし、ワイヤレスアクセスポイントへのイーサネットインターネット接続を共有するにはどうすればよいですか?さらに、ブート時にこれを自動的に開始するにはどうすればよいですか? それは可能nmcliですか?

1
マルチスレッドLinuxプロセスがシグナルを受け取るとどうなりますか?
Unix(Posix)プロセスがシグナルを受信すると、シグナルハンドラが実行されます。 マルチスレッドプロセスではどうなりますか?どのスレッドがシグナルを受信しますか? 私の意見では、シグナルAPIはそれを処理するように拡張する必要があります(つまり、シグナルハンドラのスレッドを決定できるはずです)が、Linuxカーネルのメーリングリストやさまざまなフォーラム。私が理解したように、Linusの概念はPosix標準とは異なり、最初にいくつかの互換レイヤーが構築されましたが、現在ではLinuxはposixモデルに従います。 現在の状態は何ですか?

4
yumを使用してyum repoを削除する
職場のマシンにはrootアクセス権がありませんが、使用するsudo権限がありますsudo yum(yumのみ)。 最近、誤って誤ったリポジトリ(ドロップボックス)をインストールしましたが、それを削除したいと思います。yum.repos.dディレクトリへの書き込みアクセス権がないため、手動でrepoファイルを編集または削除することは問題外です。 私はあなたがyumを使ってリポジトリをインストールできることを知っていますが(それは私がやったことです)、yumを使ってリポジトリを削除できますか? Scientific Linux 6を使用します。 ちなみに、yum --disablerepo=問題のあるリポジトリは無視できると思います。ただし、グラフィカルパッケージマネージャーにも問題が発生しているため、完全に削除したいと思います(更新を取得できなかったという通知がポップアップし続けます)。

8
Ubuntu 18.04がランダムにフリーズする
ラップトップのDell Inspiron 5000にUbuntu 18.04をインストールしました(AMD Ryzen 5 2500U / 8 GB RAM / 1 TB HDD / Windows 10 / 39.62 cm(15.6インチ)FHD / Vega 8グラフィックス) Inspiron 5575 OSがランダムにフリーズしていて、アプリケーションがまったくない場合や、7-8のタブがあるChromeがオンの場合もあります。メモリのフットプリントもデルのサポートセンターに連絡したことを確認しました。彼らはハードウェアに問題がないことを確認しました。 また、詳細については、8 GBのスペースと100 GBのファイルシステムパーティションがあり、バックアップまたはその他のストレージ用に残っています。 これを特定して解決する必要があります。 freeコマンドの出力: total used free shared buff/cache available Mem: 7863936 3474352 1285924 82252 3103660 4002564 Swap: 7812092 0 7812092 lsblk …
20 ubuntu  freeze  hang 

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