トップ «前の日記(2012-09-27) 最新 次の日記(2012-09-29)» 編集

muneda's diary


2012-09-28 [長年日記]

_1 bashの自前関数とtaskset

全CPUで処理が動くよう,tasksetでどのCPUで動かすか指定するためにこんなbashスクリプトを書いた.

#!/bin/bash

function hoge()
{
        echo "Hi there!"
}
export -f hoge

maxcpus=$(cat /proc/cpuinfo | grep -c processor)
maxcpu=$((maxcpus - 1))
for cpu in $(seq 0 $maxcpu)
do
        taskset -c $cpu hoge &
done

でも実行すると以下の様なエラーを吐いてうまく動かない.

execvp: No such file or directory
failed to execute hoge
execvp: No such file or directory
failed to execute hoge
...

どうも自前で作った関数はダメらしい.ソース見てないけどエラーメッセージを見るにexecしているからこれまでのシェルスクリプトの中身はご破算になっててそういうコマンドがあるんだと思って呼びに行くも見つからんと怒られている感じ.なので

#!/bin/bash

function hoge()
{
        cpu=$1
        taskset -c $cpu echo "Hi there!"
}
export -f hoge

maxcpus=$(cat /proc/cpuinfo | grep -c processor)
maxcpu=$((maxcpus - 1))
for cpu in $(seq 0 $maxcpu)
do
        hoge $cpu &
done

のように呼ばれた関数内でtasksetを呼ぶように変更.当然関数にしている部分を別のファイルに切り出せば元のような作りでもいいんだが,ファイルの受け渡しが面倒なので一つにまとめるということが重要なのでこうした.

Tags: Linux

過去の日記
2002|05|06|07|08|09|10|11|12|
2003|01|02|03|04|05|06|07|08|09|10|11|12|
2004|01|02|03|04|05|06|07|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|08|09|10|11|12|
2011|01|02|03|04|05|06|07|08|09|10|11|12|
2012|01|02|03|04|05|06|07|08|09|10|11|12|
2013|01|02|03|04|05|06|07|08|09|10|11|12|
2014|01|02|03|04|05|06|07|08|09|10|11|12|
2015|01|02|03|05|06|
トップ «前の日記(2012-09-27) 最新 次の日記(2012-09-29)» 編集