Skip to content

H Boot auto start systemd vel

umiklos edited this page Jun 24, 2022 · 2 revisions

Kiindulás

Adott egy shell script, ami pl a CAN felkonfigurálását végzi. A cél, hogy ezt automatikusan, rendszerinduláskor végre legyen hajtva.

A script pl neve pl /home/nvidia/utils/nissan_can_setup.sh tartalma pedig:

#!/bin/bash
modprobe can
modprobe can-raw
modprobe can-dev
modprobe mttcan
ifconfig can1 down
ip link set can1 up type can bitrate 500000
ifconfig can0 down
ip link set can0 up type can bitrate 500000

Lehetséges megoldás systemd-vel

Készítsünk egy nissan_can_boot.service fájlt a /etc/systemd/system-ben. Ennek tartalma legyen:

[Unit]
After=network.target

[Service]
ExecStart=/home/nvidia/utils/nissan_can_setup.sh
User=root

[Install]
WantedBy=multi-user.target

Konfiguráljuk és telepítsük:

sudo chmod 664 /etc/systemd/system/nissan_can_boot.service
systemctl daemon-reload
systemctl enable nissan_can_boot.service

Teszteljük ezzel a paranccsal:

systemctl start nissan_can_boot.service

Következő bootnál már indulnia kell a scriptnek.

másik példa

cat /etc/systemd/system/start_roscore.service 
[Unit]
Description=ros

[Service]
Type=forking
ExecStart=/home/szepilot/start_roscore.sh
User=root

[Install]
WantedBy=multi-user.target
cat /home/szepilot/start_roscore.sh 
#!/bin/bash

source /opt/ros/melodic/setup.bash
source /home/szepilot/catkin_ws/devel/setup.bash
source /home/szepilot/autoware.ai/devel/setup.bash

export ROS_MASTER_URI=http://192.168.1.54:11311
export ROS_IP=192.168.1.54

export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"  # This loads nvm
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion"  # This loads nvm bash_completion

# CUDA
export CUDA_ROOT=${CUDA_ROOT}:/usr/local/cuda-10.2
export CUDA_INC_DIR=${CUDA_INC_DIR}:/usr/local/cuda-10.2
export PATH=${PATH}:/usr/local/cuda-10.2/bin
export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/usr/local/cuda-10.2/lib64
export C_INCLUDE_PATH=${C_INCLUDE_PATH}:/usr/local/cuda-10.2/include


if ! screen -list | grep -q "roscore_autostart";
then
    # start roscore
    echo "start roscore"
    screen -m -d -S roscore_autostart bash -c 'roscore'
else
    echo "roscore already runs :)"
fi
Clone this wiki locally