Pocket Theories

Linux

Suppressing the Service Restart prompt for "apt install"

Updated: September 8, 2024


/etc/needrestart/needrestart.conf
$nrconf{verbosity} = 0;
$nrconf{restart} = 'a';

export DEBIAN_FRONTEND=noninteractive
export APT_LISTCHANGES_FRONTEND=none
export NEEDRESTART_MODE=a  # default is "i"nteractive; change to "a"utomatic ; see: /etc/needrestart/needrestart.conf
export NEEDRESTART_SUSPEND=1
# echo 'libc6 libraries/restart-without-asking boolean true' | debconf-set-selections

sudo apt-get remove apt-listchanges --assume-yes --force-yes
sudo apt-get --force-yes -o Dpkg::Options::="--force-confold" -o Dpkg::Options::="--force-confdef" -fuyq install package-name-here
	  

Upgrade to Ubuntu 24.04 LTS

Updated: September 21, 2024

sudo apt install -y ubuntu-release-upgrader-core

# Ensure "Prompt=lts" in "/etc/update-manager/release-upgrades" (instead of "Prompt=normal")

do-release-upgrade  # Pass "-d" to upgrade before officially supported

# apt dist-upgrade
    

Limiting Resources

Updated: September 25, 2024

mkdir /sys/fs/cgroup/myapp
CPU_QUOTA=50
CPU_PERIOD=100
echo "$CPU_QUOTA $CPU_PERIOD" > /sys/fs/cgroup/myapp/cpu.max
RAM_QUOTA="1024M"
echo "$RAM_QUOTA" > /sys/fs/cgroup/myapp/memory.max
cp /var/run/myappdb/myappd.pid /sys/fs/cgroup/myapp/cgroup.procs
#rm -Rf /sys/fs/cgroup/myapp

With tools:
apt install -y cgroup-tools
cgcreate -g cpu,memory:/myapp
cgset -r cpy.max="50 100" myapp
cgset -r memory.max="1024M" myapp
cgclassify -g cpu,memory:myapp $(cat /var/run/myappdb/myappd.pid)
cgexec -g cpu,memory:myapp /usr/bin/myappd --dbpath .
#cgdelete -g cpu,memory:myapp

systemd-run -u myappd -p CPUQuota=50% -p MemoryMax=1024M /usr/bin/myappd
systemd-cgls --all
systemd-cgtop


/etc/systemd/system/myapp.slice
[Slice]
CPUQuota=50%
MemoryMax=1024M
systemctl edit --full myappd.service
Slice=myapp.slice  #Add to the [Service] section

systemd-run -u myappd --slice=myapp.slice /usr/bin/myappd

# To run with Docker
docker run -d --name db --cgroup-parent=myapp.slice myappimg
    

ssh-copy-id: Auth with another key

Updated: October 10, 2024

# ssh-copy-id doesn't directly support auth with another key
# ...but it passes along options to ssh
ssh-copy-id -i ~/.ssh/id_rsa.nondefault -o 'IdentityFile ~/vm-key' user@remote

# This can also be done with ssh-agent
eval $(ssh-agent -s)  # Start the agent
ssh-add ~/vm-key      # Add the key to the agent
ssh-copy-id -i ~/.ssh/id_rsa.nondefault user@remote
eval $(ssh-agent -k)  # Stop the agent