System and service manager for Linux acting as init system (PID 1).
Basic building block for Linux system.
First daemon serves as the root of use space’s process tree.
Bootstraps user space and manages system services. Responsible for initializing the system and launching other services and processes.
/opt/project-iko/run.sh in background.Create, make the script executable, start script file on /opt/project-iko/run.sh directory.
mkdir -p /opt/project-iko/
vi /opt/project-iko/run.sh
chmod +x /opt/project-iko/run.sh
ln -s /opt/project-iko/run.sh
Add:
Create service file on /etc/systemd/system/ dir.
vi /etc/systemd/system/project-iko.service
Add:
[Unit]
Description=python django app for project iko
Documentation=https://doc.iko.com
After=postgres.service
[service]
ExecStart=/usr/bin/project-iko.sh
User=project-iko
Restart=on-failure
RestartSec=10
[install]
WantedBy=graphical.target
systemctl start project-iko.service # Start the service
systemctl enable project-iko.service # Run the app on restarts
Reflector - is a Python script which can retrieve the latest mirror list from the Arch Linux Mirror Status page, filter the most up-to-date mirrors, sort them by speed and overwrite the file /etc/pacman.d/mirrorlist.
Create service file on /etc/systemd/system/reflector-daily.service to run daily cron job.
Add this:
[Unit]
Description=Update Arch Linux mirrorlist daily using Reflector
After=network-online.target
Wants=network-online.target
[Service]
Type=oneshot
ExecStart=/usr/bin/reflector --country 'Kenya,South Africa,Germany,United States' --age 12 --latest 50 --sort rate --fastest 20 --save /etc/pacman.d/mirrorlist >> /var/log/reflector.log 2>&1 # Save log to /var/log/reflector.log
Create systemd timer file on /etc/systemd/system/reflector-daily.timer.
[Unit]
Description=Run reflector daily
Documentation=https://wiki.archlinux.org/title/Reflector
[Timer]
OnCalendar=daily # Daily run at midnight
Persistent=true # ensures that the task runs if the machine was off during the scheduled time
[Install]
WantedBy=timers.target
sudo systemctl daemon-reexec
sudo systemctl daemon-reload
sudo systemctl enable --now reflector-daily.timer
Check reflector-daily.service status:
systemctl status reflector-daily.service
Check reflector-daily.timer status:
systemctl status reflector-daily.timer
See next run time for systemd.timers:
systemctl list-timers | grep reflector
Check systemd logs.
journalctl -xeu reflector-daily.service
Check reflector logs.
cat /var/log/reflector.log
Download arduino-ide appimage from official site.
wget https://support.arduino.cc/hc/en-us/articles/360019833020-Download-and-install-Arduino-IDE
Make arduino executable then, move to /opt/arduino directory and create symbolic link to /usr/local/bin/arduino.
chmod +x arduino-ide*
mkdir -p /opt/arduino/
mv arduino-ide*.AppImage /opt/arduino/arduino-ide
ln -s /opt/arduino/arduino-ide /usr/local/bin/arduino
Create desktop config file on /usr/share/applications/arduino-ide.desktop.
[Desktop Entry]
Version=2.3.6
Name=Arduino IDE
Comment=Open-source electronics prototyping platform
Exec=/usr/local/bin/arduino %F
Icon=/opt/arduino/resources/icons/512x512.png
Terminal=false
Type=Application
Categories=Development;Electronics;
MimeType=text/x-arduino;
StartupNotify=true
Set proper permissions and update desktop applications.
chmod 644 /usr/share/applications/arduino-ide.desktop
update-desktop-database /usr/share/applications
Setup USB permissions.
usermod -aG dialout,lock,uucp $USER
Create udev rules for arduino devices.
vim /etc/udev/rules.d/99-arduino.rules
Add this:
# Arduino boards
SUBSYSTEMS=="usb", ATTRS{idVendor}=="2341", ATTRS{idProduct}=="0043", MODE="0666"
SUBSYSTEMS=="usb", ATTRS{idVendor}=="2341", ATTRS{idProduct}=="0001", MODE="0666"
SUBSYSTEMS=="usb", ATTRS{idVendor}=="2341", ATTRS{idProduct}=="0010", MODE="0666"
SUBSYSTEMS=="usb", ATTRS{idVendor}=="2341", ATTRS{idProduct}=="0042", MODE="0666"
SUBSYSTEMS=="usb", ATTRS{idVendor}=="2341", ATTRS{idProduct}=="0243", MODE="0666"
SUBSYSTEMS=="usb", ATTRS{idVendor}=="2341", ATTRS{idProduct}=="0001", MODE="0666"
# CH340/CH341 (common on Arduino clones)
SUBSYSTEMS=="usb", ATTRS{idVendor}=="1a86", ATTRS{idProduct}=="7523", MODE="0666"
SUBSYSTEMS=="usb", ATTRS{idVendor}=="1a86", ATTRS{idProduct}=="5523", MODE="0666"
# FTDI (used on some Arduino boards)
SUBSYSTEMS=="usb", ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6001", MODE="0666"
SUBSYSTEMS=="usb", ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6015", MODE="0666"
Apply changes.
# Reload udev rules
sudo udevadm control --reload-rules
sudo udevadm trigger
Reboot for group changes to take effect.