this question has answer here:
- threads in bash? 2 answers
i have array of arguments utilized such in command shell script. want able this
./runtests.sh -b firefox,chrome,ie where each command here start separate thread (currently multithreading opening multiple terminals , starting commands there)
i have pushed entered commands array:
if [[ $browser == *","* ]]; ifs=',' read -ra browserarray <<< "$browser" fi now have start separate thread (or process) while looping through array. can guide me in right direction? guess in sudo code like
for (( c=0; c<${#browserarray}; c++ )) starttests & am on right track?
that's not thread, background process. similar but:
so, can threads , light weight processes same.
the main difference between light weight process (lwp) , normal process lwps share same address space , other resources open files etc. resources shared these processes considered light weight compared other normal processes , hence name light weight processes.
nb: redordered clarity
what linux processes, threads, light weight processes, , process state
you can see running background process using jobs command. e.g.:
nick@nick-lt:~/test/npm-test$ sleep 10000 & [1] 23648 nick@nick-lt:~/test/npm-test$ jobs [1]+ running you can bring them foreground using fg:
nick@nick-lt:~/test/npm-test$ fg 1 sleep 1000 where cursor wait until sleep time has elapsed. can pause job when it's in foreground (as in scenario after fg 1) pressing ctrl-z (sigtstp), gives this:
[1]+ stopped sleep 1000 and resume typing:
bg 1 # resumes in background fg 1 # resumes in foreground and can kill pressing ctrl-c (sigint) when it's in foreground, ends process, or through using kill command % affix jobs id:
kill %1 # or kill <pid> onto implementation:
browsers= in "${@}"; case $i in -b) shift browsers="$1" ;; *) ;; esac done ifs=',' read -r -a splitbrowsers <<< "$browsers" browser in "${splitbrowsers[@]}" echo "running ${browser}..." $browser & done can called as:
./runtests.sh -b firefox,chrome,ie tadaaa.
Comments
Post a Comment