I want to iterate through a list of videos and convert them from .avi to .mp4 using a script, which takes about ~1 min for each file.  find . -name "*.avi" -type f | while read FILE; do   HandbrakeCLI [flags] $FILE # execute 30 sec ~ 2 min function here done   problem is, this seems to be only running on the first file, as though successive invocations are blocks.  How can I spawn asynchronous threads to handle each case?    This is a duplicate of that other issue which is trying to solve new processes of ssh, and the solution is based on arguments available to ssh. I am asking for a way to spawn new bash threads in an iterator, maybe theres a duplicate ticket that can direct me that way?
122504
I've been banging my head against for wall for a while with this one.  I want to SSH into a set of machines and check whether they are available (accepting connections and not being used). I have created a small script, tssh, which does just that:  #!/bin/bash  host=$1 timeout=${2:-1}  ssh -qo "ConnectTimeout $timeout" $host "[ \`who | cut -f1 | wc -l \` -eq 0 ] &amp;&amp; exit 0 || exit 1"   This script works correctly. Returning 255 if there was a connection problem, 1 if the machine is busy and 0 if everything is good. If anyone knows a better way to do this please let me know.  So next I try and call tssh on my set of machines using a while read loop, and this is where it all goes wrong. The loop exits as soon as tssh returns 0 and never completes the full set.   while read nu ; do tssh "MYBOXES$nu" ; done &lt; &lt;(ruby -e '(0..20).each { |i| puts i }')   At first I thought this was a subshell problem but apparently not. Any help, along with comments on style/content, would be much appreciated! I know I'm going to kick myself when I find out why...
17154
Is there a way to run a script when a particular USB device is mounted?  I keep my videos on a separate USB and would like to run a script that would mount the video folder on the USB device to the one in the home folder.
29528
So, I have 10 CPU core and 20 data to process. I want to process the data in parallel but I am afraid if I just process 20 at once it will make some problem. So, I want to process 10 data 2 times. Is there any command to do this?  Add info:  The data are in file format. It is quite huge, per file can reach 10GB. In my expreience if I launch more than 10 process, the PC will become really slow and even lag. So I am limiting the process to be only 10 which is equal to the number of cores. As for my RAM, I believe the software which process the file will not load everything at once so the RAM usage is quite low. That is why I just need to parallel the process for every 10 data. For now, I generate 10 shell script which execute parallel and each shell script contains sequential command.
88347
I'm trying to update the timestamp to the current time on all of the xml files in my directory (recursively).  I'm using Mac OSX 10.8.5.  On about 300,000 files, the following echo command takes 10 seconds:  for file in `find . -name "*.xml"`; do echo &gt;&gt; $file; done   However, the following touch command takes 10 minutes! :   for file in `find . -name "*.xml"`; do touch $file; done   Why is echo so much faster than touch here?
106897
I've a python script that has to launch a shell command for every file in a dir:  import os  files = os.listdir(".") for f in files:     os.execlp("myscript", "myscript", f)   This works fine for the first file, but after the "myscript" command has ended, the execution stops and does not come back to the python script.  How can I do? Do I have to fork() before calling os.execlp()?
8963
Related question:   Answer from there helped me a lot, this command does what I need:  ssh -R 2225:localhost:22 loginOfServerWithPublicIP@publicIP   So I wrote the script to reconnect all the time:   #!/bin/bash   while true; do     echo "try to connect..."     ssh -o ServerAliveInterval=240 -R 2225:localhost:22 user@host     echo "restarting in 5 seconds.."     sleep 5  done   And added it to the /etc/crontab. But I found out that works if only I execute it "by hand" from shell, but if it is called by cron, ssh connects and immediately finishes. (so, the script above reconnects all the time)  From man ssh, I found that for background connections I should call it with -n key, but it didn't help. Then, I just looked around for similar scripts and I found that it works if I call tail -f something, i.e. some "neverending" command, so I just created empty file /tmp/dummy_file and now my ssh command looks like this:  ssh -o ServerAliveInterval=240 -R 2225:localhost:22 -n user@host tail -f /tmp/dummy_file   It works now! But, this solution seems a bit ugly, plus I don't really understand actual reasons of that behavior. Just by chance, I tried to call bash instead of tail -f (bash seems to me "neverending" command, too), but it doesn't work.  So, could anyone please explain this behavior, and what is the correct way to create background ssh connection to keep reverse ssh tunnel up?
52502
How can one run multiple programs in the background with single command?  I have tried the commands below, but they do not work.  nohup ./script1.sh &amp; &amp;&amp; nohup ./script2.sh &amp; -bash: syntax error near unexpected token '&amp;&amp;'  nohup ./script1.sh &amp; ; nohup ./script2.sh &amp; -bash: syntax error near unexpected token ';'
1744
The only command line solution for gapless playback I found so far (working with ALSA and JACK) is moc (»music on console«). While I'm still searching for a simpler way I was wondering if it is possible to loop an audio file into a new file for a given number of times?  Something like:  loop-audio infile.flac --loop 32 outfile.flac   for repeating infile.flac 32 times into outfile.flac
42753
I tend to use pipelines in my bash scripts over process substitution in most situations, especially in cases of using multiple sets of commands as it seems more readable to do ... | ... | ... over ... &lt; &lt;(... &lt; &lt;(...)).  I'm wondering though why using process substitution is much faster in some situations than using a pipeline.  To test this, I timed two scripts using 10000 iterations of the same attached commands with one using a pipeline and another using process substitution.  Scripts:  pipeline.bash:  for i in {1..10000}; do     echo foo bar |     while read; do         echo $REPLY &gt;/dev/null     done done   proc-sub.bash  for i in {1..10000}; do     while read; do         echo $REPLY &gt;/dev/null     done &lt; &lt;(echo foo bar) done   Results:  ~$ time ./pipeline.bash  real    0m17.678s user    0m14.666s sys     0m14.807s  ~$ time ./proc-sub.bash  real    0m8.479s user    0m4.649s sys     0m6.358s   I know that pipelines create a sub process whereas process substitution creates a named pipe or some file in /dev/fd, but am unclear about how those differences impact performance.
111227
I see  on how to do this with images numerically. But I have a directory of images that look like this for example:  ADAM SANDLER.jpg JOHN DOE.jpg SAM SMITH.jpg   I want to create a video slideshow from all of the images in this directory, sorted alphabetically.  Is there any way to do this?  EDIT  In the end, I'm trying to create a vertical video to post on Instagram. These photos are portraits so it will need to be a "vertical" video. It seems FFMPEG is having issues with this, at least playing the video in Quicktime doesn't seem to be working. It needs to be a 15 second video, and there are 25 images.  This is the command I'm running, and it's just appearing black when I open it in Quicktime. When I open in VLC it's playing but only shows the first couple frames.  ffmpeg -r 1 -i img%03d.jpg -c:v libx264 -pix_fmt yuv420p out.mp4
4965
I looked at  and can't understand how this works.  This command "exponentially spawns subprocesses until your box locks up".  But why? What I understand less are the colons.  user@host$ :(){ :|:&amp; };:
123071
I have the following in a script  for server in ${servers[@]}; do     echo ${server}     ssh user@${server} "for i in /tmp/foo* ; do echo ${i}; done" done   But it doesn't work. Weird thing, I see $I amount of return lines. So if I have ten files, I see ten blank lines.
7234
Even when I start a brand new file in Blender, I only get four video output file options: AVI raw, AVI JPEG, Frame Server, FFMpeg Video.  I am running version 2.78.5 (I'm using the beta so that I can use denoising.  How can I get access to all the other video outputs other people have? Like this:
48151
When writing a batch file to automate something on a Windows box, I've needed to pause its execution for several seconds (usually in a test/wait loop, waiting for a process to start). At the time, the best solution I could find uses ping (I kid you not) to achieve the desired effect. I've found a better write-up of it , which describes a callable "wait.bat", implemented as follows:  @ping 127.0.0.1 -n 2 -w 1000 &gt; nul @ping 127.0.0.1 -n %1% -w 1000&gt; nul   You can then include calls to wait.bat in your own batch file, passing in the number of seconds to sleep.   (at last!). In the meantime, for those of us still using Windows&nbsp;XP, Windows 2000 or (sadly) , is there a better way?  I modified the sleep.py script in the , so that it defaults to one second if no arguments are passed on the command line:  import time, sys  time.sleep(float(sys.argv[1]) if len(sys.argv) &gt; 1 else 1)
79288
With 5 images I have to create a video of 60 seconds in ffmpeg, each image has to display for 15 seconds. after  15 seconds, first image has to fade out and 2nd image has to fade in, after that 2nd image has to fade out, 3rd image has to fade in..etc. Please guide me how can I achieve this using ffmpeg commands.
4303
I want to repeatedly execute a function in Python every 60 seconds forever (just like an  in Objective C). This code will run as a daemon and is effectively like calling the python script every minute using a cron, but without requiring that to be set up by the user.  In , the solution appears to effectively just  for x seconds. I don't need such advanced functionality so perhaps something like this would work  while True:     # Code executed here     time.sleep(60)   Are there any foreseeable problems with this code?
110055
I have a file  Other - Analogue Clock-JEJqy1Wlovw.mp4  which is just a download from     It's 2 minutes 13 seconds long.  I had some issues cutting it to the second.  I was able to use this command   ffmpeg -ss 0 -i infile.mp4 -c copy -t 60 output.mp4  to make a file that was 60 seconds, so no problem so far.  That's the file exactly 1 minute, no issue there so far.  C:\vids\a&gt;dir blahhclo.mp4   9,590,540 bytes  C:\vids\a&gt;   C:\vids\a&gt;mediainfo blahhclo.mp4 General Complete name                            : blahhclo.mp4 Format                                   : MPEG-4 Format profile                           : Base Media Codec ID                                 : isom File size                                : 9.15 MiB Duration                                 : 1mn 0s Overall bit rate                         : 1 278 Kbps Writing application                      : Lavf58.3.100  Video ID                                       : 1 Format                                   : AVC Format/Info                              : Advanced Video Codec Format profile                           : High@L4.0 Format settings, CABAC                   : Yes Format settings, ReFrames                : 3 frames Codec ID                                 : avc1 Codec ID/Info                            : Advanced Video Coding Duration                                 : 1mn 0s Bit rate                                 : 1 146 Kbps Width                                    : 1 920 pixels Height                                   : 1 080 pixels Display aspect ratio                     : 16:9 Frame rate mode                          : Constant Frame rate                               : 25.000 fps Color space                              : YUV Chroma subsampling                       : 4:2:0 Bit depth                                : 8 bits Scan type                                : Progressive Bits/(Pixel*Frame)                       : 0.022 Stream size                              : 8.21 MiB (90%)  Audio ID                                       : 2 Format                                   : AAC Format/Info                              : Advanced Audio Codec Format profile                           : LC Codec ID                                 : 40 Duration                                 : 1mn 0s Bit rate mode                            : Constant Bit rate                                 : 126 Kbps Channel count                            : 2 channels Channel positions                        : Front: L R Sampling rate                            : 44.1 KHz Compression mode                         : Lossy Delay relative to video                  : 40ms Stream size                              : 920 KiB (10%)    C:\vids\a&gt;   But I do have an issue when I try to cut it at the following times, and it's whether I try to cut the 1 minute one or the whole 2 min 13sec one.  If I cut with -ss 0 -t 1,   it produces a file that is 1s 22ms.  So that's not too bad that's fairly close to one second. 1.022 seconds is quite good for an attempt to cut one second.  If I cut with -ss 0 -t 2, it produces a file that is 3s 19ms   That is terrible! it's meant to be one second!  If I cut with -ss 0 -t 30 then it is fine it does 30s 1ms.  Or this video for example, also an mp4   C:\blah&gt;ffmpeg -ss 189 -i vid.mp4 -c copy -t 6 someoutput.mp4  C:\blah&gt;mediainfo someoutput.mp4   produces a duration of 8s 383ms  That is so wrong though 'cos it should be 6 seconds! So that is two seconds too long!  C:\blah&gt;ffmpeg -ss 191 -i vid.mp4 -c copy -t 6 someoutput2.mp4  C:\blah&gt;mediainfo output2.mp4   shows that ffmpeg produced a duration of 10s 403ms  which is crazily wrong 'cos the ffmpeg command specified 6 seconds!  So that's not just one second out, that is 4 seconds out!  That's almost 50% longer than it should be!