我已将启动 bash 脚本添加到运行 Raspbian (Debian GNU/Linux 11 (bullseye)) 的设备。
这是我的脚本:
SysmacApp.sh
#!/bin/bash
mkdir -p /home/pi/App;
mkdir -p /home/pi/Shared/Service;
mkdir -p /home/pi/Shared/Service/Data;
mkdir -p /home/pi/Shared/Sysmac;
sudo mount -t cifs //10.10.0.1/SysmacApp /home/pi/App -o username=*****,password=*****
cp /home/pi/App/Service/* /home/pi/Shared/Service -r
cp /home/pi/App/Sysmac/* /home/pi/Shared/Sysmac -r
cp /home/pi/App/Shared/* /home/pi/Shared
sudo umount /home/pi/App
cd /home/pi/Shared/Service
dotnet ./SysmacService.dll &
sleep 2
cd /home/pi/Shared/Sysmac
dotnet ./SysmacUI.Skia.Gtk.dll &
所以基本上:
- 如果不存在,则创建一些目录。
- 从共享文件夹复制两个应用程序。
- 执行这两个应用程序。
执行脚本是因为应用程序在设备启动时运行,但不会复制信息,除非我在终端中手动执行此脚本。
为了运行脚本,我在/etc/xdg/autostart
文件夹中添加了一个条目:
SysmacApp.desktop
[Desktop Entry]
Name=SysmacApp
Comment=Starts sysmac application
Exec=/home/pi/Shared/SysmacApp.sh
Terminal=true
Type=Application
Categories=Utility;Application;
如果我远程重新启动设备,应用程序将被执行,但不会从共享文件夹中复制。
我究竟做错了什么?
如果从终端窗口执行该脚本,则该脚本可以工作。
我在日志文件中得到了这个:
Sep 15 14:21:07 raspberrypi kernel: [ 14.997131] FS-Cache: Netfs 'cifs' registered for caching
Sep 15 14:21:07 raspberrypi kernel: [ 15.008071] Key type cifs.spnego registered
Sep 15 14:21:07 raspberrypi kernel: [ 15.008110] Key type cifs.idmap registered
Sep 15 14:21:07 raspberrypi kernel: [ 15.010226] CIFS: No dialect specified on mount. Default has changed to a more secure dialect, SMB2.1 or later (e.g. SMB3>Sep 15 14:21:07 raspberrypi kernel: [ 15.010253] CIFS: Attempting to mount \\10.10.0.1\SysmacApp
Sep 15 14:21:07 raspberrypi kernel: [ 15.010426] CIFS: VFS: Error connecting to socket. Aborting operation.
Sep 15 14:21:07 raspberrypi kernel: [ 15.010452] CIFS: VFS: cifs_mount failed w/return code = -101
日志显示 eth0 路由是在尝试挂载卷后添加的,因此我已添加-o _netdev
到挂载命令但没有成功。