Unix & Linux

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

2
ファイルを入力として別のファイルでawkコマンドを実行するBashスクリプト
1つのファイルを取り、各行を別のファイルで実行されるawkコマンドの文字列として実行するスクリプトを記述しようとしています。これが私がこの時点で持っているものです。 #!/bin/bash FILE=$1 FILE_TO_SEARCH=$2 exec 4> "FILE_TO_SEARCH" while read -ru 3 LINE; do awk -v RS='' -v ORS='\n\n' "$LINE" <&4 done 3< "$FILE" スクリプトを実行しようとすると、次のようになります。 ./bashscript2.sh: line 8: read: read error: 3: Bad file descriptor 検索するファイル(FILE)の例は、次のような内容になります。 hostAbC host123 host345 hostMos hostDef 次に、ファイル(FILE_TO_SEARCH)に対してawkコマンドを実行しますが、その内容は以下のようになりますが、さらに多くの点が異なります。 * * * * * * * * * …

1
デスクトップエントリから結合されたhexoコマンドを実行する
Debian 9.5にはxfceとhexoが含まれています:3.7.1 問題は、「ドラフト」と呼ばれる私のスクリプトを調整することです。 s@lokal:~$ sudo cat /usr/local/bin/draft #!/bin/bash killall hexo cd /home/s/Dropbox/blog hexo clean pwd whoami hexo g --draft hexo server --draft & sleep 5 firefox 'http://localhost:4000/' s@lokal:~$ 私が理解しようとしているのは、デスクトップエントリからhexo複合コマンドを実行することです。デスクトップファイルはこちら s@lokal:~$ cat ~/Desktop/blog.desktop; ls -l ~/Desktop/blog.desktop [Desktop Entry] Version=1.0 Type=Application Name=blog Comment= Exec=/usr/local/bin/draft Icon=accessories-text-editor Path=/home/s/Dropbox/blog/ Terminal=true StartupNotify=true -rwxr-xr-x 1 s s …

1
コマンドラインからディレクトリに作成されたファイルをリダイレクトする
スクリプト自体を変更せずに、コマンドラインから直接、作成したファイルを.shスクリプトから特定のディレクトリにリダイレクトする方法があるかどうか疑問に思っていました。 まあ言ってみれば: 現在のディレクトリにファイルを作成するスクリプトprove.shがあります。 cat prove.sh #! /bin/bash echo "try 1" > try.1.txt echo "try 2" > try.2.txt そして私はそれらの作成したファイルをリダイレクトしたいと思いません、現在のディレクトリではなく、別のディレクトリに(さんが言わせて〜/書類/ /証明)ストレートから私: sh prove.sh <...something to redirect files to directory...> スクリプト自体を変更せずに。 可能だと思いますか? 誰にも手がかりがありますか? EDITED:具体的には、私は何をする必要があることは、サーバ上で動作するプログラムの出力をリダイレクトすることであり、それは内の指定したディレクトリ内の各種ファイル(何も標準出力ません)を作成します--out別のコンピュータに、フィールドを直接せずに(プログラムが実行されている元のサーバーに何かを書き込む)。 このサーバーへのアクセスをホストしているだけなので、インストールもsudoもできません。2番目のサーバーのポートをリッスンし、出力をnectatのこのポートにリダイレクトすることは、プログラムを実行するサーバーのファイアウォールが変更できないために機能しませんでした。 アイデアは?


1
CronからBashスクリプト、Bashスクリプト、Expectスクリプト
一連のExpectスクリプトを実行したい。実行のチェーンは次のようになります。Cronジョブはbashスクリプトを開始し、このラッパーは〜11個のbashスクリプトを開始Parallelします-それぞれがスクリプトを呼び出しExpectます。 そのExpect部分まではすべて順調です。2番目のBashスクリプトにParallel部分があり、各期待スクリプトのホスト名をファイルに出力しています。実際、doはグループで表示されますが、Expectスクリプトはすぐに終了します。 Cronジョブの性質上、環境変数をジョブに渡す必要があると聞きました。私はこれまでこれを試しました: 48 9 * * * rm /home/admin/.flag && /home/admin/.profile; /home/admin/nodeTest.sh nodeTestの重要なコードは次のとおりです。 for i in {1..10}; do for chunk in `ls /home/admin/assets/sagLogs/x*`; do cat $chunk | parallel -j 11 -I% --max-args 1 /home/abdmin/oneNode.sh "%" clear done done チャンクの長さは11ホスト名です。それらはoneNodeを介してExpectスクリプトを開始するために並列プログラムに入ります-oneNodeはホスト名をIPに変換し、実行するスクリプトを決定します。 これはコマンドラインからうまく機能します。悲しみを与えてくれるだけのCronの仕事。interacttclコマンドが問題を引き起こすことを読みましたが、スクリプトでは使用していません。これは並行して実行される行です: timeout 80 sudo expect /home/admin/assets/activeTest $sag $ip & 更新:前の行を次のように変更しました: …
bash  cron  expect 

1
DebianライブビルドでGRUBメニューラベルをカスタマイズする
このドキュメントに従って、Debianライブを使用して自分のディストリビューションを展開しようとしています。コンパイルされたisoが完全に実行/インストールされ、構成ファイルで指定した名前( "MY_LINUX")を持つという点で、すべてが正常です。ただし、特有の問題の1つは、インストール後、grubメニューに「MY_LINUX」ではなく「* Debian GNU / Linux」が表示されることです。lb-configおよびlb-buildのマンページを含むすべてのドキュメントを検索しましたが、grubメニューに私のディストリビューションの名前( "MY_LINUX" )、デフォルトではありません。イメージをビルドする前にgrub.cfgファイルを配置する必要がありますか?私の設定ファイルは次のとおりです。 #!/bin/sh set -e lb config noauto \ -b iso-hybrid \ --apt-options "--force-yes --yes" \ --cache true \ --apt-recommends true \ --architecture amd64 \ --mirror-bootstrap "http://debian.csail.mit.edu/debian/" \ --mirror-chroot "http://debian.csail.mit.edu/debian/" \ --archive-areas "main contrib non-free" \ --parent-archive-areas "main contrib non-free" \ --debian-installer live \ …

1
同じ文字列内の値の比較[終了]
私のスクリプトでは、ウェブサイトからデータを取得しています。 content=$(wget 10.0.1.5:8000/currentsong?sid=1 -q -O -); それは、基本的にshoutcastサーバー上の曲情報です。しかし、問題があります:私はやりたい:新しい値が文字列の古い値と一致しない場合、何かをしてください。そのように: if [ $content.new != $content.old ]; then echo "New song info there.." else echo "NOTHING" fi どうやってやるの? 編集:私は、スクリプトがループで実行されると言って忘れました。

1
javaはパスに追加します
ディレクトリにいくつかの.jarファイルがあります/home/unix/dfernand/bin/picard/picard-tools-1.106。 しかし、私はにディレクトリを追加するときPATHやCLASSPATH、私のbashrcに、Javaはまだ.jarファイルを認識しないと、私はその理由は分かりません。 私が試してみました: >export PATH="/home/unix/dfernand/bin/picard/picard-tools-1.106:$PATH" > export CLASSPATH=$CLASSPATH:/home/unix/dfernand/bin/picard/picard-tools-1.106 > java -jar AddOrReplaceReadGroups.jar -h Unable to access jarfile AddOrReplaceReadGroups.jar >export CLASSPATH="/home/unix/dfernand/bin/picard/picard-tools-1.106:$CLASSPATH" >java -jar AddOrReplaceReadGroups.jar -h Unable to access jarfile AddOrReplaceReadGroups.jar 私が行った場合、 [niveum] dfernand> java -jar /home/unix/dfernand/bin/picard/picard-tools-1.106/AddOrReplaceReadGroups.jar -h それは機能します! PATH/CLASSPATH 誰が私のバグがどこにあるのか考えていますか?に何か他のものを追加する必要がありPATH/CLASSPATHますか?間違った構文を使用していますか?
path  java  bashrc 

2
パスワードを手動で入力する
スクリプトは機能しています: #!/bin/sh echo "Enter Server IP Address" read IP echo 'mypassword' | sudo -S ssh $IP </home/myscript.sh IPアドレスを手動で入力し、次にパスワードを入力できるように変更するにはどうすればよいですか?

1
TestDiskで失われたパーティションテーブルを回復する
だから、どういうわけか私のディスクのパーティションテーブルはバナナになりました。次のブートでシステムが起動せず、BIOSを繰り返し蹴られ、実行可能なブートオプションがありませんでした。BIOSはまだディスクを適切に検出したので、LiveDVDを起動して、何が起こっているのかを確認しました。 そのため、OSを搭載したディスク/dev/sdb、128GB SSDには、パーティションテーブルがありません。gpartとfdiskの両方がそれを空と報告します。fdiskは、ディスクラベルタイプをgptとして報告します。 testdiskを実行してみました。これは、パーティションテーブルタイプがIntel(EFI GPTではない)であることを示しています。両方のタイプのパーティションを検索しようとしましたが、Intelだけが成功しました。 だから、最初の質問は:インテルのパーティションタイプMBRはありますか?ディスクラベルがGPTであってもEFI GPTが機能しないのはなぜですか? 開始時に、ツールはこのパーティションのみを検出します。 Disk /dev/sdb - 128 GB / 119 GiB - CHS 15566 255 63 Partition Start End Size in sectors 1 P EFI GPT 0 0 2 15566 29 63 250069679 クイック検索(または完全検索)を実行すると、ツールはいくつかのパーティションを検出します。これらの中には、意味のある5つのパーティションがあります。 FAT32 0 32 33 33 69 36 532480 [SYSTEM] Linux 33 …

1
Apacheのアクセス許可が設定されている場合でもブラウザでBashスクリプトを実行する
Dockerコンテナーに配置するプログラムがあります。ブラウザページに移動してDockerコンテナを実行し、プログラムが起動できるようにします。 そこで、Dockerコマンド(runco​​ntainer.sh)を実行するbashスクリプトを作成しました。 #!/bin/sh sudo docker run -ti --rm -e DISPLAY=$DISPLAY -v /tmp/.X11-unix:/tmp/.X11-unix myproject 次に、そのシェルスクリプト(webscript.php)を実行するPHPファイルを作成しました。 <?php exec('/usr/lib/cgi-bin/runcontainer.sh'); ?> apache2をインストールした状態でubuntu 16.04を実行しています。 問題: bashターミナルで 実行するphp webscript.phpとプログラムが実行されます。コンテナが起動し、プログラムが起動します。ただし、Webブラウザー(firefox)から試しても、そうではありません。 http://localhost/cgi-bin/webscript.phpにアクセスすると、ページが表示されますが、Dockerコンテナーが起動しません。そこで、/ var / log / apache2 / error.logを見て、次のエラーを見ました:sudo: no tty present and no askpass program specified。 同様の質問に基づいてsudo apachectl -S、Apacheユーザーとグループの名前を見に走り ました。両方のwww-dataです。そこで、ユーザーとグループを/ usr / lib / cgi-bin /ディレクトリにwww-dataに設定します。 www-dataに完全なアクセス許可がある場合でも、sudo: …

1
LZ4とDDを使用したHDクローンが失敗する
私は今、しばらくの間、DDとGZIPを使用してOSのクラッシュを復元するために、完全なHDDイメージをクローニング使用してきたdd if=/dev/sda | gzip > img.gzし、gzip img.gz | dd of=/dev/sda これは常に正常に動作しますが、プロセスは少し遅くなります。イメージの作成または復元には2時間以上かかります。より高速な(圧縮解除)圧縮の実験を開始しました。LZ4。 繰り返しますが、同じコマンドdd if=/dev/sda | lz4 > img.lz4とを使用しますlz4 img.lz4 | dd of=/dev/sda。イメージの作成と復元にかか​​る時間は50%未満になりました。ポイントは、この復元されたイメージが起動できないPCを提供することです。 何が間違っていますか?LZ4はこの目的に適していませんか?

2
ドメインへのIPルーティング
特定のポートを介してIPアドレスにデータを送信するリモートデバイスがあります。解決したい問題は、ドメインにデータを送信する必要があるが、デバイスはIPアドレスの設定のみを許可することです。 特定のドメインへのIPルーティングを行うために、Linuxをどのように構成できますか。 それは可能ですか? ドメインのIPをアドレス指定するようにデバイスを設定できますが、このIPアドレスは動的です。私が持っているドメインはnoip.comのドメインです。
ip  routing 

1
vncviewer:VNCサーバーが接続を閉じました
そこで、KDE ​​PlasmaでDebian Jessieを実行しているワークステーション「orac」にVNCサーバー(Tight VNC)をインストールしました。そして、KDE ​​PlasmaでDebian Stretchを実行しているワークステーション「tact」上のVNCクライアント(Tight VNC)。 oracでvncpasswdを実行して、パスワードを構成しました。 VNCを使用して、「tact」から「orac」を使用したい。 タクトからoracにsshし、vncserverを開始しました。 jj5@orac:~$ vncserver New 'X' desktop is orac:1 Starting applications specified in /home/jj5/.vnc/xstartup Log file is /home/jj5/.vnc/orac:1.log 次に、タクトのコンソールから実行しました: jj5@tact:~$ vncviewer orac:1 Connected to RFB server, using protocol version 3.8 Enabling TightVNC protocol extensions Performing standard VNC authentication Password: Authentication successful Desktop …
debian  kde  vnc 

1
Openfirmwareを使用して起動不可能なディスクから起動する
IBM 9133-55A(powerpc)サーバーでDebian 7.8を仮想化(VIOSパーティション)しようとしました。何らかの理由で、yabootとgrubの両方が仮想ハードディスクにインストールできませんでした。ここで、openfirmwareプロンプトからカーネルを直接起動したいのですが、プロンプトで仮想ハードディスクが見つかりません。lsコマンドの出力は次のとおりです。(http://pastebin.com/9cbHQA93) debianインストールメディアを使用してVMを起動すると、ハードディスクは/ dev / sdaで、ルートパーティションは/ dev / sda2です

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