View previous topic :: View next topic |
Author |
Message |
Cyberstudio Apprentice
Joined: 17 Oct 2005 Posts: 240 Location: /usr/src/linux
|
Posted: Fri Jul 12, 2013 7:36 pm Post subject: [SOLVED] Run a script before and after the emerge process? |
|
|
Hi guys!
I have a thinkpad w500. Its a workstation class laptop but it gets very very hot when im compiling a big package (kde, firefox, etc). My idea is to make portage run a script before it begins the compilation process, and run another script after it finishes.
The first script will increase the fan speed to maximun. This will run before the compilation process begins. The second one will make the fans run quiet again, and will run after the compilation process has finished.
If im compiling 10 packages, the first script should run when the first package starts compiling. The second script should run after the lastest package finishes.
I have these scripts already. How can i plug those scripts to portage? _________________ En los CDs de Microsoft, al reves escuchas un mensaje satanico. Eso no es lo peor, al derecho, te instala windows.
Last edited by Cyberstudio on Sat Jul 13, 2013 3:54 pm; edited 1 time in total |
|
Back to top |
|
|
John R. Graham Administrator
Joined: 08 Mar 2005 Posts: 10589 Location: Somewhere over Atlanta, Georgia
|
Posted: Fri Jul 12, 2013 8:24 pm Post subject: |
|
|
No need. Portage's emerge is in /usr/bin. Put this script in /usr/local/bin (which is ahead of /usr/bin on the PATH) and name it emerge: Code: | #!/bin/bash
echo "I would put my pre-emerge script invocation here."
/usr/bin/emerge "$@"
echo "I would put my post-emerge script invocation here." | After putting the script there, force bash to recalculate it's hash table for the emerge command withAnd done. One of the cardinal rules of the Unix way is, "Never add a feature to a program if a half dozen lines of shell script will accomplish the goal."
- John _________________ I can confirm that I have received between 0 and 499 National Security Letters.
Last edited by John R. Graham on Fri Jul 12, 2013 9:21 pm; edited 2 times in total |
|
Back to top |
|
|
DONAHUE Watchman
Joined: 09 Dec 2006 Posts: 7651 Location: Goose Creek SC
|
Posted: Fri Jul 12, 2013 8:28 pm Post subject: |
|
|
a script in similar vein to do something, run emerge, undo that something. I'm not the author, just a user.
Quote: | #!/bin/bash
MEMSIZE=8000M
mounted=false
. /etc/make.conf
. /etc/init.d/functions.sh
if [ -z "$PORTAGE_TMPDIR" ]; then
PORTAGE_TMPDIR="/var/tmp/portage"
fi
mounttmpfs() {
mount -t tmpfs -o size=$MEMSIZE,nr_inodes=1M tmpfs ${PORTAGE_TMPDIR}
mounted="true"
}
compile() {
einfo "running emerge ${*}"
emerge ${*}
}
unmount() {
ebegin "unmounting tmpfs"
umount -f ${PORTAGE_TMPDIR}
eend $?
}
ebegin "Mounting $MEMSIZE of memory to ${PORTAGE_TMPDIR}"
if [ -z "$(pgrep -f /usr/bin/emerge)" ];then
if [ -z "$(mount | grep ${PORTAGE_TMPDIR})" ];then
mounttmpfs
else
eerror "tmpfs already mounted!"
exit 0
fi
else
eerror "emerge already running!"
exit 0
fi
eend $?
# the next line would change the cpu-governour, if available, to the highest frequency
#[ -f /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor ] && echo performance > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
# run emerge
compile $@
# unmount tmpfs
$mounted && umount ${PORTAGE_TMPDIR}
# and set the scheduler back to "ondemand"
#[ -f /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor ] && echo ondemand > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor |
anyone seen my mind? _________________ Defund the FCC.
Last edited by DONAHUE on Fri Jul 12, 2013 9:49 pm; edited 2 times in total |
|
Back to top |
|
|
John R. Graham Administrator
Joined: 08 Mar 2005 Posts: 10589 Location: Somewhere over Atlanta, Georgia
|
Posted: Fri Jul 12, 2013 9:06 pm Post subject: |
|
|
Attach the script (or a link)?
- John _________________ I can confirm that I have received between 0 and 499 National Security Letters. |
|
Back to top |
|
|
666threesixes666 Veteran
Joined: 31 May 2011 Posts: 1248 Location: 42.68n 85.41w
|
Posted: Fri Jul 12, 2013 9:13 pm Post subject: |
|
|
script encapsulation of emerge?
/home/user/script location && ./script
script
script stuff
emerge
more script stuff
done
ok so you want emerge passed some stuff.... that can be done too i _think_ its emerge $@ instead of the emerge alone that would do nothing.... then it would be ./script package though i could be wrong.
my fix, put a cookie rack under the laptop!
(John r grams answer beat me to the punch.) |
|
Back to top |
|
|
Cyberstudio Apprentice
Joined: 17 Oct 2005 Posts: 240 Location: /usr/src/linux
|
Posted: Fri Jul 12, 2013 11:27 pm Post subject: |
|
|
John R. Graham wrote: | No need. Portage's emerge is in /usr/bin. Put this script in /usr/local/bin (which is ahead of /usr/bin on the PATH) and name it emerge: Code: | #!/bin/bash
echo "I would put my pre-emerge script invocation here."
/usr/bin/emerge "$@"
echo "I would put my post-emerge script invocation here." | After putting the script there, force bash to recalculate it's hash table for the emerge command withAnd done. One of the cardinal rules of the Unix way is, "Never add a feature to a program if a half dozen lines of shell script will accomplish the goal."
- John |
Hi! Thanks to all of you for your answers.
I did what you said. I created the file /usr/local/bin/emerge with this content:
Code: |
#!/bin/bash
echo level 7 > /proc/acpi/ibm/fan
/usr/bin/emerge "$@"
echo level auto > /proc/acpi/ibm/fan
|
After that i ran hash emerge, and tested it with firefox: Firefox compiles ok, but the fan stays normal, without changes in its speed.
These 2 commands,
Code: | echo level auto > /proc/acpi/ibm/fan |
and
Code: | echo level 7 > /proc/acpi/ibm/fan |
do work, i have tested them. So, what i may be doing wrong? _________________ En los CDs de Microsoft, al reves escuchas un mensaje satanico. Eso no es lo peor, al derecho, te instala windows. |
|
Back to top |
|
|
666threesixes666 Veteran
Joined: 31 May 2011 Posts: 1248 Location: 42.68n 85.41w
|
Posted: Fri Jul 12, 2013 11:44 pm Post subject: |
|
|
"/usr/local/bin (which is ahead of /usr/bin on the PATH)"
my new users do not have this in their path.
post the contents of
to see if its in yours. |
|
Back to top |
|
|
Cyberstudio Apprentice
Joined: 17 Oct 2005 Posts: 240 Location: /usr/src/linux
|
Posted: Fri Jul 12, 2013 11:47 pm Post subject: |
|
|
Gentrino axyom # echo $PATH
/sbin:/bin:/usr/sbin:/usr/bin _________________ En los CDs de Microsoft, al reves escuchas un mensaje satanico. Eso no es lo peor, al derecho, te instala windows. |
|
Back to top |
|
|
666threesixes666 Veteran
Joined: 31 May 2011 Posts: 1248 Location: 42.68n 85.41w
|
Posted: Sat Jul 13, 2013 12:02 am Post subject: |
|
|
beware.... updating path can cause PROBLEMS if it is not done correctly.
Code: |
echo 'export PATH=/usr/local/bin:$PATH' >> $HOME/.bashrc
|
then open a new terminal.....
testing of answer given to you.....
test@mksrv ~ $ echo 'export PATH=/usr/local/bin:$PATH' >> $HOME/.bashrc
test@mksrv ~ $ echo $PATH
/bin:/usr/bin
test@mksrv ~ $ exit
exit
mksrv mkultra # su test
test@mksrv /home/mkultra $ echo $PATH
/usr/local/bin:/bin:/usr/bin
then resume where you left off testing the other post up there. and as a hint, the file contents are /usr/local/bin/emerge, not /usr/local/bin/hash\ emerge |
|
Back to top |
|
|
Cyberstudio Apprentice
Joined: 17 Oct 2005 Posts: 240 Location: /usr/src/linux
|
Posted: Sat Jul 13, 2013 12:39 am Post subject: |
|
|
Thanks to all of you!
Its working now _________________ En los CDs de Microsoft, al reves escuchas un mensaje satanico. Eso no es lo peor, al derecho, te instala windows. |
|
Back to top |
|
|
666threesixes666 Veteran
Joined: 31 May 2011 Posts: 1248 Location: 42.68n 85.41w
|
Posted: Sat Jul 13, 2013 1:29 am Post subject: |
|
|
you're welcome. please edit post number 1 and change the title to include [solved] somewhere |
|
Back to top |
|
|
John R. Graham Administrator
Joined: 08 Mar 2005 Posts: 10589 Location: Somewhere over Atlanta, Georgia
|
Posted: Sun Jul 14, 2013 7:43 pm Post subject: |
|
|
666threesixes666 wrote: | "/usr/local/bin (which is ahead of /usr/bin on the PATH)"
my new users do not have this in their path. | I think you'll find that, if you log in as root at a console, you'll have the whole normal path, just as I described. su man page wrote: | Invoked without a username, su defaults to becoming the superuser. The optional argument - may be used to provide an environment similar to what the user would expect had the user logged in directly | So, just like the man page says, for consistency, you should be changing to superuser withThere's no need to muck with the standard path definition: you just need to take the proper steps to get the standard path definition.
- John _________________ I can confirm that I have received between 0 and 499 National Security Letters. |
|
Back to top |
|
|
|