General :: Bash Script Only Works When Manually Running?
Oct 8, 2010
I have a PGP script that for whatever reason if I let linux's cron run it automatically, it sends out the final email with attachment with a blank file. If I come in and run in manually everything works fine and the file is populated in the file. So the only real difference is that i'm running it manually through cron, rather than letting cron run it at a set time.Below is a sumary of my script.
I use crontab to execute a bash script every minute and the output is redirected to a log file.In that bash script there is a screen command to start a screen session.When I execute the script manually it works perfect, but with crontab, the screen command is not executed, but the echo's are. Because they are written in the log file...Here's my script:Script removed for violation of LQ Ruleso the script runs perfect when I do it manually, but not with cron...Here's my crontab (sudo crontab -e)
# m h dom mon dow command */1 * * * * sudo /home/laurent/Games/Cod4/StartCod4.sh | egrep 'running|started' >> /home/laurent/Games/Cod4/Serverlog.log
I don't quite understand how pipes work in bash. I know that it takes an output from one command as the input in another command. What an output is I can get because it's what the command prints out to the screen. But how do I know what input a command will take? Here is an example I thought would work:
Which gem | rm Unfortunately it didn't. Which gem prints out "/usr/bin/gem" so that must be the output right? I thought that was given to rm so it would be "rm /usr/bin/gem" but I was wrong. How do I know what input a command takes?
I'm really running into a wall trying to figure this out. I have a Bash script and narrowed down the one command that doesn't seem to work via cron and it's my pgp decrypting line. Works fine if I run the command via terminal but if I run it via cron it doesn't output anything.crontab -e shows the cronjob and it runs, creates the log file with no output. Is there maybe something I need to run as well? Permissions look set, unless the cron is running as a different user(was under the assumption if it showed up under crontab while logged into that user, then it would run as that user.
When in XUBUNTU i click the picture of the 2 pcs indicating a network and choose "connect to hidden wireless network", put in the information.All this works nicely. When i reboot it's saved my config so i choose it to connect again but the "connect" button is disabled so i have to config it all over again and then it works. How do i get it to just connect to the network on login?
I have written a simple backup script, and added it to CronTab, but it doesnt execute at all. Here is my script: [URL]...And my CronTab entry: 0 */2 * * * root /home/server/Scripts/backup.sh
I know this has been covered in many threads before, but I'm stuck not finding my exact situation or an answer. I'm a newbie using a Debian Linux machine as the client and Windows XP machine as the server. I have successfully mounted the XP Network drive on the Linux machine using commands from the root terminal:
mount -t smbfs -o username="Windows Username",password=windowspassword //XPcomputername/folder /mountpoint/
However when I put the command in the ect/fstab file as suggested in several posts, I don't get any result on boot up. I.e. I can't get the network drive to mount on start up, I always have to manually mount it from the root terminal.
I have a hardware audit script I want to run on several remote machines around my office. Is there a way to run the script that resides on my machine via ssh or do I need to copy the script to the local machine and then run it...
I would be running SQL commands (UPDATE/SELECT) from within my bash script. I am completely new to this subject. Is MYSQL used for this purpose? Alternatively, what is sqlplus?
I know I have to count how many instances are running: ps x | grep apache2 | wc -l result if it's running: 2, or else: 1 I also know there is a command called test that I could use to perform the verification, but I don't know how to use test with wc
so I wrote a small script that pretty much just takes in two numbers and counts from the first to the second, e.g.
unknown-hacker|544> count.sh 1 3 1 2 3
My problem is I want to make it so that if you input invalid parameters, such as non-numerical characters, more than 2 numbers, etc., you'd get an error message
I've been trying to write a bash script called runSorter.sh that runs an executable that also takes in some parameters and outputs the results to a text file. The executable, sorter, takes in a number parameter. I want to make it so that you can input as many number parameters into runSorter.sh as you want and it will run the sorter executable for each one. So far, what I have looks like this:
#!/bin/bash args=("$@") INDEX=0 if [ -z args ]; then echo "Error" else while [ $# -gt $INDEX ]; do NUM=${args[$INDEX]} echo $NUM echo ./sorter $NUM let INDEX=INDEX+1 done fi
My problem is that when I run ./run-sorter.sh 100 on my terminal, it just prints this to the screen: ./sorter 100 How can I have so that it properly executes sorter and outputs everything to a text file?
I am a newbie in linux. I tried to write an autorun bash script on /root and select System-Preferences-More Preferences-Sessions-Startup Programs-Add.But the bash script seems like not working. Following is my bash script:
I have a bash script that messages the user periodically. Is there any way in the script to check if the screensaver is running, so the script doesn't spam messages while the user is away? The xscreensaver process is always running in the background, I've noticed.
I found it once on the web by means of googling it.How do you run a command, from nrpe.cfg, to make sure that it works?For instance, command[check_total_procs]=/usr/local/nagios/libexec/check_procs -w 150 -c 200
I had some trouble with the netinst CD and I had to install lenny with the 6DVDs instead. My internet connection only works after I edit the interfaces and resolv.conf files manually. So my question is: can I do that from the netinst CD before it actually needs the connection to install everything? (otherwise I'll just need to use the DVDs.
Despite the history file is unique (~/.bash_history) I see that the multiple bash processes run on different windows are not all updating that file. I presume that the bash is not taking into account this possibility (multiple bashes on multiple windows) and writes thus the history file in a simple straightforward way. This would mean that a number of history entries are lost. I've tried to find information but had no luck so far.
I am using Sphinx search on my webserver and it quits after a certain amount of time leaving my search page broken.Here is a bash script that I want to run every 10mins via cron:
have a web application that runs fine.Whenever I run jetty manually the application runs ok. This is what I do:sudo java -jar start.jarThe application is located within the webapps directory correctly and the required jar files are within /usr/share/jetty/lib.But when I run jetty as a service:sudo service jetty startThe server starts, but the application does not respond. There is no error in the output. This is very strange, isn't it
Yes I have tried exporting my paths and variables aab still will not run my script. 'm sure I am doing something wrong.I have a shell script which runs a jar file. This is not working correctly. After reading around I have read this is commonly due to incorrect paths due to cron running via it's own shell instance and therefore does not have the same preferences setup as my profile does.here is what my script looks like today after several modifications:
I want to write the date & time and a text string to a file from crontab.The following line works fine in the CL:echo $(/bin/date +"%F %T")" Some text" >> /home/me/foo.txtI installed in crontab and no text appears in the file that it is redirected to.The crontab entry looks like:* * * * * echo $(/bin/date +"%F %T")" Some text" >> /home/me/foo.txtTried a version to just write to stdout....* * * * * echo $(/bin/date +"%F %T")" Some text"No date, time or text appears at the command line
I have a script that pops up a jpg file several times a day as a reminder. The script is called up by crontab and it works perfectly.The issue is that I want the script to also perform a system "beep" in addition to popping up the jpg file. When I test it on the command line everything works but when I run it in cron the jpg file pops up but the beep doesn't beep. I'm thinking the problem is in the "echo -e \a" part. I must be missing something.Here is my script:
I'm writing a Bash script to take IPTC keywords from a text file and write them, via Exiv2, to several (first batch is 100) JPEG files in a single directory. The script has one while loop inside another while loop, both terminated, but I'm pretty sure that's not my problem. I think it's how I'm incrementing the "counter" variable, although it could also be the method of parsing the text lines from the file (using cut with delimiters that have worked fine in simpler scripts).
Here's the code as I've worked it up to this point.
Code:
And yes, "keywords" checks out in Crimson Editor, Emacs GUI and nano as an ASCII file with UNIX line endings. No issues on that score.
Feeding each line consecutively into a terminal (excepting the exiv2 command) works fine: each variable echoes with the part of the text line used as a variable value as it should, even when the b variable is incremented the quick&dirty way (up arrow three commands and hit enter).
Running the above script in eval mode (sh -x) stalls after setting the b variable to one and reading in the first line of text. I'd like to know why. I'd also like some advice on another reliable method of parsing the read-in lines.
I have a startup script for jboss (start.sh) that sets some JAVA_OPTS and then calls bash run.sh.If I run it (start.sh) from the command line it runs in the terminal fine. If I make a shortcut launcher for it in gnome and set it for 'application in terminal' it pops up then immediately dies after launch.Not sure what the problem is. Is this not working because one script is calling a second script? But then why does it work when I call ./start.sh?