タグ付けされた質問 「scripting」

スクリプトは、スタンドアロンの実行可能プログラムにコンパイルされるのではなく、インタープリタープログラムによって実行される一連のコマンドまたは命令です。

2
Linuxで `#!/ usr / bin / envコマンド--argument`を使用したシェバン行が失敗する
私は簡単なスクリプトを持っています: #!/usr/bin/env ruby --verbose # script.rb puts "hi" 私のOSXボックスでは、うまく動きます: osx% ./script.rb hi しかし、私のLinuxボックスでは、エラーがスローされます linux% ./script.rb /usr/bin/env: ruby --verbose: No such file or directory シバンラインを手動で実行すると、正常に動作します linux% /usr/bin/env ruby --verbose ./script.rb hi しかしruby --verbose、1つの引数にパックするとエラーを再現できますenv linux% /usr/bin/env "ruby --verbose" ./script.rb /usr/bin/env: ruby --verbose: No such file or directory だから、これはenvシェバンラインのリセットをどのように解釈するかという問題だと思います。私はGNU coreutils 8.4を使用していますenv: linux% /usr/bin/env …



3
起動/起動中にスクリプトを実行します。init.d対cron @reboot
現在、システムの起動/起動時にスクリプトを実行するためのinit.dcronとcron の違いを理解しようとし@rebootています。 使用@reboot(このメソッドはで言及されたこのフォーラムによるhs.chandraは)単純に行くことによって、いくつかの何が簡単ですcrontab -eし、作成し@reboot /some_directory/to_your/script/your_script.txtた後、your_script.txtシステムが再起動されるたびに実行されなければなりません。詳細な説明@rebootはこちら または、スクリプトの2行目に埋め込むこと/etc/init.d/your_script.txtにより、次のようにします。 #!/bin/bash # /etc/init.d/your_script.txt 実行することもできますが、システムが起動するたびに実行されるchmod +x /etc/init.d/your_script.txtことにもなりyour_script.txtます。 Q1: 2つの主な違いは何ですか?Q2:どちらがより堅牢ですか?Q3: 2つのうち、より良いものはありますか?Q4:これは、起動中に実行するスクリプトを埋め込む正しい方法ですか? 起動時に実行するbash .shファイルを組み込みます。

7
ssh接続から完全に切り離して、リモートコマンドを実行する
私は2台のコンピュータを持っている、localpcとremoteserver。 でlocalpcいくつかのコマンドを実行する必要がありますremoteserver。必要なことの1つは、数時間実行するバックアップスクリプトを開始することです。私はコマンドlocalpcを「発火」させてから、完全に独立して実行したいremoteserverと思いlocalpcます。 これは私がこれまでにやったことです: remoteserver 次を含むスクリプト: /root/backup.sh localpc これを実行するようにスケジュールされています: ssh root@remoteserver 'nohup /root/backup.sh' & 私はこれを正しい方法でやっていますか?これを行うためのより良い方法はありますか?この方法で問題が発生しますか?

8
Autohotkeyと同等ですか?
AutoHotkeyに同等の製品/方法はありますか。知らない人のために、マウスの動きとキーボードをプログラムできる製品です。これにより、手動で行うのではなく、プログラムの特定の機能を「マクロ」にできます。昔は彼らはキーボードスタッフと呼んでいました。しかし、私は「マウス移動」スタッファーも必要なので、それは解決策の半分にすぎません。 そのような獣はいますか?

15
多くのサーバーでSSH経由でコマンドを自動的に実行する
.txtファイルにはIPアドレスのリストがあります。例: 1.1.1.1 2.2.2.2 3.3.3.3 すべてのIPアドレスの背後にサーバーがあり、すべてのサーバーでポート22で実行されているsshdがあります。すべてのサーバーがknown_hostsリストにあるわけではありません(私のPCではUbuntu 10.04 LTS / bash)。 これらのサーバーでコマンドを実行し、出力を収集するにはどうすればよいですか? 理想的には、すべてのサーバーでコマンドを並行して実行したいと思います。 すべてのサーバーで公開鍵認証を使用します。 潜在的な落とし穴を次に示します。 sshは、指定されたサーバーのsshキーをknown_hostsファイルに入れるように促します。 指定されたコマンドは、出力が潜在的に無効であることを示すゼロ以外の終了コードを返す場合があります。私はそれを認識する必要があります。 たとえば、ネットワークエラーが原因で、特定のサーバーへの接続の確立に失敗する場合があります。 コマンドが予想よりも長く実行されたり、コマンドの実行中にサーバーがダウンした場合に備えて、タイムアウトが必要です。 サーバーはAIX / kshです(しかし、私はそれは本当に重要ではないと思います。

2
setuidビットを適切に使用する
通常のユーザーが実行するときにルート権限が必要なプロセスがあります。どうやら私はこれを達成するために「setuidビット」を使用することができます。POSIXシステムでこれを行う適切な方法は何ですか? また、インタープリター(bash、perl、python、phpなど)を使用するスクリプトでこれを行うにはどうすればよいですか?
45 scripting  setuid 

7
UNIXシェルスクリプトのファイル拡張子[終了]
ウィキペディアでは、.shの記事は次のように述べています。 .shファイル拡張子タイプについては、Bourne shellを参照してください。 他のUNIXシェルはどうですか? 私は実行中のインタープリターを示すためにファイル内でシバン が使用されていることを知っていますが、私は疑問に思います: ファイル拡張子とファイル拡張子なしの長所と短所は何ですか?


7
シェルの二重引用符と単一引用符のニーモニックは何ですか?
二重引用符または一重引用符でUnix変数が置換されるかどうかを調べることなく、覚えるのに十分なスクリプトを実行しません。 私は何が起こっているのかを明確に理解しています。私の質問は、誰かが正しい引用ルールを頭の中に固執させるための記憶の秘 haveを持っているのですか?

4
プロセスからコマンドライン全体を取得する方法は?
プロセス名を使用して実行中のプロセスからコマンド引数またはコマンドライン全体を取得するにはどうすればよいですか? たとえば、このプロセス: # ps PID USER TIME COMMAND 1452 root 0:00 /sbin/udhcpc -b -T 1 -A 12 -i eth0 -p /var/run/udhcpc.eth0.pid そして、私が欲しいのは/sbin/udhcpc -b -T 1 -A 12 -i eth0 -p /var/run/udhcpc.eth0.pid、議論です。プロセス名を知っており、その引数が必要です。SliTazでBusyboxを使用しています。

6
ユニバーサルNode.jsシバン?
Node.jsは最近非常に人気があり、いくつかのスクリプトを書いています。残念ながら、互換性は問題です。公式には、Node.jsインタープリターはと呼ばれることになっていますnodeが、DebianとUbuntuはnodejs代わりに呼び出される実行可能ファイルを出荷しています。 Node.jsが可能な限り多くの状況で使用できるポータブルスクリプトが必要です。ファイル名がfoo.jsであると仮定すると、2つの方法でスクリプトを実行したいです。 ./foo.jsnodeまたはのいずれかでnodejsある場合、スクリプトを実行します$PATH。 node foo.jsまた、スクリプトを実行します(インタープリターが呼び出されると仮定node) 注: xavierm02と私による回答は、ポリグロットスクリプトの2つのバリエーションです。純粋なシバンソリューションが存在する場合、それにも興味があります。

7
ファイルからの入力でxargsを使用する
次のファイルがあるとします bob john sue 現在、これらの直接のような(この場合)URLパターンにcorrospond http://example.com/persons/bob.tar、john.tar、sue.tar。 これらの線を使って、それらを実行したいxargsです。しかし、実行中のコマンドに何が渡されるのかわかりません。プロンプト(たとえば、各行を単にエコーするcat file | xargs echo $PARAM)またはbashスクリプトからパラメーターにアクセスするにはどうすればよいですか。
41 bash  scripting  xargs 

5
ファイル内の環境変数を実際の値に置き換えますか?
ファイル内の環境変数を置換/評価する簡単な方法はありますか?私がconfig.xml含むファイルがあるとしましょう: <property> <name>instanceId</name> <value>$INSTANCE_ID</value> </property> <property> <name>rootPath</name> <value>/services/$SERVICE_NAME</value> </property> ...等。$INSTANCE_IDファイル内のINSTANCE_ID環境変数$SERVICE_NAMEの値とSERVICE_NAMEenv varの値を置き換えます。どの環境変数が必要かを先験的に知りません(または、誰かが構成ファイルに新しい環境変数を追加した場合にスクリプトを更新する必要はありません)。ありがとう!

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