Posted by Vide on June 8, 2009
Via http://linux.byexamples.com/archives/144/redirect-output-to-multiple-processes/
You already know that if you want to pass the output of a program to the input of another program, you can use the pipe | character.
You now that if you want to write the ouput of a program to the disk and at the same time pass it as input to another program, you can use tee.
But maybe you don’t know that if you want to pass the ouput of a program to multiple programs as input, you can use tee again with a little of subshelling.
# source_program | tee (> program1) (> program2) (> programN)| programN+1
Posted in Linux, Oneliner, Shell scripts, Tips, Unix | 1 Comment »
Posted by rga on December 30, 2008
Hello,
Maybe you are interested on installing untrusted packages on your Debian box, but by default you are prompted with this prompt:
Do you want to continue? [Y/n/?] y
WARNING: untrusted versions of the following packages will be installed!
Untrusted packages could compromise your system’s security.
You should only proceed with the installation if you are certain that
this is what you want to do.
untrusted_package
Do you want to ignore this warning and proceed anyway?
To continue, enter “Yes”; to abort, enter “No”:
This is fine, since it warns you about it, but it breaks non-interactive scripts, because needs user confirmation.
What then? the solution is easy, you only need to tell to aptitude that you want to use those packages without user confirmation.
From aptitude manual:
Option: Aptitude::CmdLine::Ignore-Trust-Violations
Default: false
Description: In command-line mode, causes aptitude to ignore the installation of untrusted packages. This is a synonym for Apt::Get::AllowUnauthenticated.
Just go!
# aptitude -o Aptitude::Cmdline::ignore-trust-violations=true -y install your_untrusted_package
WARNING: untrusted versions of the following packages will be installed!
Untrusted packages could compromise your system’s security.
You should only proceed with the installation if you are certain that
this is what you want to do.
untrusted_package
*** WARNING *** Ignoring these trust violations because
aptitude::CmdLine::Ignore-Trust-Violations is ‘true’!
Writing extended state information… Done
It does not use an interactive prompt and of course your script will continue :)
See you!
Posted in Debian, Linux, Shell scripts, Tips | Tagged: Apt, Aptitude, Debian, Packages, Repo, source, Untrusted | 1 Comment »
Posted by Vide on October 29, 2008
If you’re managing large MySQL installations where lot of queries (written by lot of people) are executed, this is going to sound familiar. Sometimes due to some faulty query or to heavy traffic, your MySQL server could be overloaded and queries start to stall there, making your PROCESS LIST grow and grow and grow…
So, here it is a quick script that kills every SELECT (we don’t want to kill other query types) older than a certain amount of second and that can help you when you find yourself in one of these situations.
It’s rather quick’n'dirty, but for it’s small use case, it works. It expects GNU userland
#!/bin/bash
SEC=$1
IFS='|'
if [[ $SEC -lt 1 ]]; then
echo "Usage: $0 SECONDS"
exit 1
fi
mysqladmin proc -v|grep Query|grep -Evi "delete|update|insert|alter table" |while read dummy qid qusr qhost qdb qstat qsec qstat2 query
do
if [ $qsec -gt $SEC ]; then
echo "Killing query $qid..."
mysqladmin kill $qid
fi
done
Posted in Linux, Mysql, Shell scripts, Tips | Tagged: Mysql, Shell scripts | Leave a Comment »
Posted by Vide on September 4, 2007
If you need to work with dates in a shell script, this oneline could be useful:
echo $((`date +%s` - $OFFSET))|awk '{print strftime("%Y-%m-%d",$1)}'
What it does: it takes the current system time, converts it to epoch, rest $OFFSET (which should be in seconds) and then convert it again in the forma YYYY-MM-DD (but you can use every output supported by strftime, man strftime). Useful if you want to do some quick date calculation without having to fight with months, leap years and so on.
Posted in FreeBSD, Linux, OSX, Oneliner, Shell scripts | 1 Comment »