Unix & Linux

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

6
フルパスを指定せずに、Bashビルトインの代わりにシステムコマンドを使用する
私は対話型シェルとしてBashを使用していますが、両方が同じ名前を共有している場合、Bashにシェル組み込みコマンドの代わりにシステムコマンドを実行させる簡単な方法があるかどうか疑問に思っていました。 たとえば、次のシステムを使用してkill(からutil-linux)シグナルを送信する代わりに、指定されたプロセスのプロセスID(pid)を出力します。 $ /bin/kill -p httpd 2617 ... システムコマンドのフルパスを指定しないと、システムコマンドの代わりにBashビルトインが使用されます。kill組み込みは持っていない-pコマンドが失敗したように、オプションを: $ kill -p httpd bash: kill: p: invalid signal specification Make bashがシェル組み込みではなく外部の `time`コマンドを使用するようにリストされている回答を試しましたtimeが、実際にはシェルキーワードであり、シェル組み込みではないため、ほとんどが機能します。 で一時的にBashビルトインを無効にする以外にenable -n kill、これまでに見た中で最良の解決策は以下を使用することです: $(which kill) -p httpd シェルビルトインの代わりに外部コマンドを実行する他の簡単な(タイピングが少ない)方法はありますか? これkillは単なる例であり、組み込みコマンドをプレフィックスとして使用すると、外部コマンドと同じ名前の関数が実行されないようにする一般的なソリューションcommandが必要です。ほとんどの場合、新しいプロセスをフォークする必要がないため、組み込みバージョンを使用することを好みます。また、組み込みコマンドには外部コマンドにはない機能がある場合があります。

6
Unixコマンドを使用して、サブディレクトリ内のファイルをSSH経由でリモートコンピューターにcpすることは可能ですか?
一連のソフトウェアファイルを~/Downloadsパーソナルコンピューターのサブディレクトリにダウンロードしています。また、bashを使用して、を使用してコンピューターにリモート接続しますssh。 このファイルをsshリモートコンピューターに転送することは可能ですか?
17 ssh  remote 

3
バックグラウンドで無限ループを実行する方法
スクリプトの実行を続けながら、バックグラウンドで無限ループを実行するにはどうすればよいですか? 「スクリプト」の例: while true; do something_in_the_background; done do_something_while_the_loop_goes_on_in_the_background for 1 2 3; do somethingelse; done exit 0 これ(に注意&)は、しばらくしてシステム全体をクラッシュさせるようです: while true; do something_in_the_background & done do_something_while_the_loop_goes_on_in_the_background for 1 2 3; do somethingelse; done exit 0
17 bash 

2
パッケージ自体をインストールせずにrpmパッケージの依存関係をインストールする方法は?(rhel / fedora)
パッケージ(* .rpm)のセットがあります。rpm -qRp <package>必要なものをリストするためにできるパッケージごとに、パッケージ自体をインストールせずに(必要なものを)インストールしたいと思います。すべての有効なリポジトリにライブが必要です。rpm -qRp ...たとえば、出力を解析する独自のスクリプトを作成せずにこれを行う簡単な方法はありますか。 require(yum localinstall)ですべてをインストールしてから元のパッケージをアンインストールすることでそれができることはわかっていますが、問題はセットに依存関係と競合の両方があるパッケージが含まれていることです。ただし、必要なパッケージは競合しません。複数回実行したyum localinstall <list>後yum remove <list>、リスト内のパッケージが競合しないことを確認する必要があります。 もっと良い方法はありますか?基本的にのようなものが欲しいのyum-builddepですが、buildrequiresではなくrequireが必要です。 私のディストリビューションはFedora/RHEL
17 yum  rpm 

1
停止し、SIGKILLを無視し、実行可能なプロセス(ゾンビでも割り込み不可能なスリープでもない)。どんな状態ですか?
数回は応答を停止し、完全にロックしているように見えるプロセスがあります。straceの試行やgdbのピークには応答しません(gdbはwait4()syscallでハングします)。プロセスは実行可能であり、syscall(/ proc / X / syscall:)runningまたは割り込み不可能なスリープ(/ proc / X / status :)で待機していませんState: R (running)。 このプロセスはどのような状態ですか?これはおそらく何らかのタイプのカーネルバグですか? プロセスはredisです、そして、これは今数回起こりました。プロセスを強制終了できるのは再起動だけだと思われます。OSはCent 7です。 編集:カーネルのバージョンは3.10.0-123.13.2.el7.x86_64です。3.10.0-229.11.1.el7へのアップデートを試して、違いが生じるかどうかを確認してください。

2
POSIX準拠のシェルでパスワードを要求しますか?
bashスクリプトでパスワードを要求したいときは、次のようにします。 read -s ...しかしbash、POSIXモードで実行するとsh、-sオプションは拒否されます: $ read -s sh: 1: read: Illegal option -s POSIX準拠のコマンドを使用して入力を安全に要求するにはどうすればよいですか?


2
所有者にファイルの作成と読み取りを許可しますが、変更または削除は許可しません
特定のディレクトリでファイルを作成および読み取る権限をユーザーに付与しますが、ファイルを変更または削除することはできません。ユーザーが大丈夫なファイルに追加できる場合、私はむしろしたくない。これはUbuntu Linux上にあります。 これは標準のUnixファイル許可では不可能だと思いますが、おそらくACLを使用してこれは可能ですか?ユーザーは常にSFTPを使用して接続するため、SFTP内でこれを制御する何らかの方法があれば(OSの許可とは対照的に)問題ありません。 明確にするために、次のものが必要です。 echo hello> test#は成功しました。テストが存在せず、作成が許可されているためです echo hello >> test#は、追加が許可されているかどうかに応じて成功または失敗する場合があります echo hello2>テスト#は失敗しました。テストが既に存在し、変更が許可されていないためです。 読み取りが許可されているため、catテスト#は成功 削除は許可されていないため、rmテスト#は失敗します なぜ私がこれをしたいのか疑問に思っているなら、それはDupplicatiバックアップシステムをランサムウェアに耐性にすることです。
17 linux  files  permissions  acl 

2
ファイルが見つからない/破損しているパッケージを再インストールする
異常なシャットダウンとカラフルなfsckの後、大量のファイルが失われました。「rpm -Va」の出力は数百行の長さです(主にファイルが欠落していますが、チェックサムやその他の不一致もあります)。ファイルが見つからないか破損しているパッケージを再インストールする簡単な方法はありますか? 問題のOSはFedora 22です。
17 fedora  yum  rpm  dnf 

4
あるプログラムの標準入力を引数として別のプログラムに渡すにはどうすればよいですか?
2つの引数を取るプログラムが存在するとします。入力ファイルと出力ファイル。 この出力ファイルをディスクに保存するのではなくstdin、別のプログラムに直接渡す場合はどうなりますか。これを達成する方法はありますか? Linuxで出くわす多くのコマンドには、出力ファイルの引数として「-」を渡すオプションがあります。これは、上記で指定したことを行います。これstdinは、プログラムのを引数として渡すことができないためですか?もしそうなら、どうすればいいのでしょうか? これを使用してどのようにイメージするかの例は次のとおりです。 pdftotext "C BY BRIAN W KERNIGHAN & DENNIS M RITCHIE.pdf" stdin(echo) 私が使用しているシェルはbashです。

5
コマンドラインを使用してSamba経由でファイルを送信する
Sambaを使用して、コマンドライン経由でクライアントマシンにアイテムを送信する方法があるかどうか疑問に思っていました(Sambaサーバーからファイルを送信する必要があります)。私はいつも使用できることを知っていますscpが、最初にSambaでそれを行う方法があるかどうか疑問に思っていました。ありがとう!

3
0111や0333などのアクセス許可の目的
(つまり、ユーザーは、111や333などのLinuxのパーミッションの目的は何で実行することができますが、読み取ることができません実行する能力が自動的に読み取る能力を意味するものではありません場合は、ファイルを)?

2
LinuxのUNIXドメインソケットパスの先頭にある@記号は何を示していますか?
実行したとき、netstat --protocol unixまたはlsof -UいくつかのUNIXソケットパスの前に@記号が付いていることがわかります(例:@ / tmp / dbus-qj8V39Yrpa)。実行するls -l /tmpと、そこにdbus-qj8V39Yrpaという名前のファイルが表示されません。 問題は、先頭に付加された@記号が何を意味するかということです。2番目の関連する質問は、ファイルシステム上のunixソケットファイル(@ / tmp / dbus-qj8V39Yrpa)を実際にどこで見つけることができますか?
17 linux  path  socket 

1
不完全なディレクトリ名が与えられたときにcdが自動的に選択するのは標準的な動作ですか?
と呼ばれる3つのフォルダーProjectAがProjectBありProjectCます。をtab完了cdしてcd Projectを押すとEnter、が選択されProjectCます。これは、他の同様のケースにも当てはまることがわかりました。デフォルトでは、辞書式順序で最後になります(ただし、これは最後に変更/追加された可能性もあります)。 これはのデフォルトの動作cdですか?ここで誤って何かを設定しましたか? OSX 10.10.3をbash 4.3で実行しています。

3
「-」という名前のファイルを「小さく」するにはどうすればよいですか?
誤って名前-(たとえば、seq 10 > -)を持つファイルを作成しました。次にless、表示に使用しようとしましたが、ハングします。 less -からの入力を予期しているため、これが起こっていることを理解しstdinてい-ますので、ファイル名として解釈しません。試しましたless \-が、うまくいきません。 だから、lessそれ-がファイルであり、stdinではないことを示す方法はありますか? 私が得ることができる最高のものは: find -name '-' -exec less {} +
17 less  stdin 

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