Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

"WIP" Create auto-cpufreq-sysvinit #599

Open
wants to merge 20 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from 6 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
24 changes: 17 additions & 7 deletions scripts/auto-cpufreq-install.sh
Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I have to thank @wyhasany for making the script and @yunginnanet for his fork with the needed fixes otherwise I wouldn't be able to get auto-cpufreq-sysvinit to work

Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I suggest you prepend "WIP" (work in progress) to title of this PR, and then please remove WIP part & announce it when it's ready for review.

Thanks!

Original file line number Diff line number Diff line change
Expand Up @@ -68,17 +68,27 @@ elif [ "$(ps h -o comm 1)" = "systemd" ];then

echo -e "\n* Enabling auto-cpufreq daemon (systemd) service at boot"
systemctl enable auto-cpufreq
# Install script for openrc
# Install script for openrc / sysvinit
elif [ "$(ps h -o comm 1)" = "init" ];then
echo -e "\n* Deploying auto-cpufreq openrc unit file"
cp /usr/local/share/auto-cpufreq/scripts/auto-cpufreq-openrc /etc/init.d/auto-cpufreq
chmod +x /etc/init.d/auto-cpufreq

echo -e "Starting auto-cpufreq daemon (openrc) service"
ls /etc/inittab
if [ -e "/etc/inittab" ]; then
echo -e "\n* Deploy auto-cpufreq sysvinit unit file"
cp /usr/local/share/auto-cpufreq/scripts/auto-cpufreq-sysvinit /etc/init.d/auto-cpufreq

Copy link

@nixon87 nixon87 Jan 11, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think you need a
chmod +x /etc/init.d/auto-cpufreq
here
The copying to /etc/init.d works on my system but the script is not executable.
Maybe the same later for openrc.

echo -e "\n* Starting auto-cpufreq daemon (sysvinit) service"
sysv-rc-conf --level auto-cpufreq start

echo -e "\n* Enabling auto-cpufreq daemon (sysvinit) service at boot"
sysv-rc-conf --level auto-cpufreq-sysvinit on
else
echo -e "\n* Deploy auto-cpufreq openrc unit file"
cp /usr/local/share/auto-cpufreq/scripts/auto-cpufreq-openrc /etc/init.d/auto-cpufreq
echo -e "\n* Starting auto-cpufreq daemon (openrc) service"
rc-service auto-cpufreq start

echo -e "\n* Enabling auto-cpufreq daemon (openrc) service at boot"
rc-update add auto-cpufreq
rc-update add auto-cpufreqlocal/share/auto-cpufreq/scripts/auto-cpufreq-openrc /etc/init.d/auto-cpufreq
fi
# Install script for s6
elif [ "$(ps h -o comm 1)" = "s6-svscan" ];then
echo -e "\n* Deploying auto-cpufreq s6 unit file"
Expand Down
98 changes: 98 additions & 0 deletions scripts/auto-cpufreq-sysvinit
Original file line number Diff line number Diff line change
@@ -0,0 +1,98 @@
#!/bin/sh
### BEGIN INIT INFO
# Provides: auto-cpufreq
# Required-Start: $local_fs $network $named $time $syslog
# Required-Stop: $local_fs $network $named $time $syslog
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Description: Automatic\ CPU\ speed\ \&\ power\ optimizer\ for\ Linux
### END INIT INFO

SCRIPT="/home/Abdulhafez/.scripts/Auto-cpufreq.sh"
RUNAS=root

PIDFILE=/var/run/auto-cpufreq.pid
LOGFILE=/var/log/auto-cpufreq.log

start() {
if [ -f $PIDFILE ] && [ -s $PIDFILE ] && kill -0 $(cat $PIDFILE); then
echo 'Service already running' >&2
return 1
fi
echo 'Starting service…' >&2
local CMD="$SCRIPT &> \"$LOGFILE\" & echo \$!"
su -c "$CMD" $RUNAS > "$PIDFILE"
# Try with this command line instead of above if not workable
# su -s /bin/sh $RUNAS -c "$CMD" > "$PIDFILE"

sleep 2
PID=$(cat $PIDFILE)
if pgrep -u $RUNAS -f $NAME > /dev/null
then
echo "$NAME is now running, the PID is $PID"
else
echo ''
echo "Error! Could not start $NAME!"
fi
}

stop() {
if [ ! -f "$PIDFILE" ] || ! kill -0 $(cat "$PIDFILE"); then
echo 'Service not running' >&2
return 1
fi
echo 'Stopping service…' >&2
kill -15 $(cat "$PIDFILE") && rm -f "$PIDFILE"
echo 'Service stopped' >&2
}

uninstall() {
echo -n "Are you really sure you want to uninstall this service? That cannot be undone. [yes|No] "
local SURE
read SURE
if [ "$SURE" = "yes" ]; then
stop
rm -f "$PIDFILE"
echo "Notice: log file was not removed: $LOGFILE" >&2
update-rc.d -f $NAME remove
rm -fv "$0"
else
echo "Abort!"
fi
}

status() {
printf "%-50s" "Checking auto-cpufreq..."
if [ -f $PIDFILE ] && [ -s $PIDFILE ]; then
PID=$(cat $PIDFILE)
if [ -z "$(ps axf | grep ${PID} | grep -v grep)" ]; then
printf "%s\n" "The process appears to be dead but pidfile still exists"
else
echo "Running, the PID is $PID"
fi
else
printf "%s\n" "Service not running"
fi
}


case "$1" in
start)
start
;;
stop)
stop
;;
status)
status
;;
uninstall)
uninstall
;;
restart)
stop
start
;;
*)
echo "Usage: $0 {start|stop|status|restart|uninstall}"
esac