[求助,很急]ubuntu开机自动运行脚本问题

系统安装、升级讨论
版面规则
我们都知道新人的确很菜,也喜欢抱怨,并且带有浓厚的Windows习惯,但既然在这里询问,我们就应该有责任帮助他们解决问题,而不是直接泼冷水、简单的否定或发表对解决问题没有任何帮助的帖子。乐于分享,以人为本,这正是Ubuntu的精神所在。
胖次打脸
帖子: 3
注册时间: 2017-02-09 11:00
系统: Ubuntu 16.10

Re: [求助,很急]ubuntu开机自动运行脚本问题

#16

帖子 胖次打脸 » 2017-02-09 21:47

16.10把rc.local服务化了

1、sudo vi /etc/systemd/system/rc-local.service

[Unit]
Description=/etc/rc.local Compatibility
ConditionPathExists=/etc/rc.local

[Service]
Type=forking
ExecStart=/etc/rc.local start
TimeoutSec=0
StandardOutput=tty
RemainAfterExit=yes
SysVStartPriority=99
#sysVstart这行可以删掉,我看启动日志中貌似报忽略这个了。。

[Install]
WantedBy=multi-user.target

2、sudo systemctl enable rc-local.service
poloshiao
论坛版主
帖子: 18279
注册时间: 2009-08-04 16:33

Re: [求助,很急]ubuntu开机自动运行脚本问题

#17

帖子 poloshiao » 2017-02-10 8:42

在rc.local上加命令语句 sh ~/Desktop/newservice.sh,没有用...
不过经过实验,移动至家目录外且用绝对路径仍然无法完成开机自启,请问还有什么地方可能出错了吗?
1. 請把 newservice.sh 內容 複製貼上來
2. 請把 在 rc.local 上 加的命令语句 完整貼上來

3. 補充
網路上許多文章 都顯示 debian / ubuntu 的 /etc/rc.local 不一定有效

4. http://www.jb51.net/article/100413.htm
這一篇是建議把 newservice.sh 使用 update-rc.d 指令
佈置到 /etc/rc?.d/ 軟連結 ?=0~6,S
你可以試試
4-1. 這個方法 在 systemd 需要修正 (Ubuntu 14.10 開始 預設 systemd)
ruby_yu
帖子: 18
注册时间: 2017-02-09 18:56
系统: windows7

Re: [求助,很急]ubuntu开机自动运行脚本问题

#18

帖子 ruby_yu » 2017-02-10 16:25

vickycq 写了:有可能是这样:rc.local 执行了你的脚本,但由于某些原因看不到执行的效果,导致您认为没有执行。
例如,newservice.sh 的功能需要网络,但 rc.local 执行时网络尚未启动。
或 newservice.sh 的效果是执行图形界面应用程序,但 rc.local 执行时图形界面尚未启动。

可考虑大致描述 newservice.sh 的内容,期望中执行的效果是怎样的?方便的话贴上来看看
另执行以下指令将结果全部复制贴上来

代码: 全选

ls -l /etc/rc.local
cat /etc/rc.local
我昨晚想到了这个问题,的确我的newservice.sh中需要调用ns,需要nam图形界面启动,所以我昨晚自己尝试着把ns和nam加入了开机启动项里,但没有成功,现在又只能来请教你们了,因为是实验性的newservice,所以代码很简单,如下:
rc.local末端增加代码

代码: 全选

/opt/newservice.sh
exit 0
newservice.sh

代码: 全选

#!/bin/bash
cd /mnt/hgfs/shared
ns exercise1.txt
exit 0
我觉得问题就在这,能有办法开机自动先启动ns仿真和nam图形界面吗?谢谢大大。
ruby_yu
帖子: 18
注册时间: 2017-02-09 18:56
系统: windows7

Re: [求助,很急]ubuntu开机自动运行脚本问题

#19

帖子 ruby_yu » 2017-02-10 16:27

vickycq 写了:有可能是这样:rc.local 执行了你的脚本,但由于某些原因看不到执行的效果,导致您认为没有执行。
例如,newservice.sh 的功能需要网络,但 rc.local 执行时网络尚未启动。
或 newservice.sh 的效果是执行图形界面应用程序,但 rc.local 执行时图形界面尚未启动。

可考虑大致描述 newservice.sh 的内容,期望中执行的效果是怎样的?方便的话贴上来看看
另执行以下指令将结果全部复制贴上来

代码: 全选

ls -l /etc/rc.local
cat /etc/rc.local
vickycq 写了:有可能是这样:rc.local 执行了你的脚本,但由于某些原因看不到执行的效果,导致您认为没有执行。
例如,newservice.sh 的功能需要网络,但 rc.local 执行时网络尚未启动。
或 newservice.sh 的效果是执行图形界面应用程序,但 rc.local 执行时图形界面尚未启动。

可考虑大致描述 newservice.sh 的内容,期望中执行的效果是怎样的?方便的话贴上来看看
另执行以下指令将结果全部复制贴上来

代码: 全选

ls -l /etc/rc.local
cat /etc/rc.local
另外执行的想要的效果就是一个网络传输方面的模拟,如图
附件
newser1.png
ruby_yu
帖子: 18
注册时间: 2017-02-09 18:56
系统: windows7

Re: [求助,很急]ubuntu开机自动运行脚本问题

#20

帖子 ruby_yu » 2017-02-10 16:30

poloshiao 写了:
在rc.local上加命令语句 sh ~/Desktop/newservice.sh,没有用...
不过经过实验,移动至家目录外且用绝对路径仍然无法完成开机自启,请问还有什么地方可能出错了吗?
1. 請把 newservice.sh 內容 複製貼上來
2. 請把 在 rc.local 上 加的命令语句 完整貼上來

3. 補充
網路上許多文章 都顯示 debian / ubuntu 的 /etc/rc.local 不一定有效

4. http://www.jb51.net/article/100413.htm
這一篇是建議把 newservice.sh 使用 update-rc.d 指令
佈置到 /etc/rc?.d/ 軟連結 ?=0~6,S
你可以試試
4-1. 這個方法 在 systemd 需要修正 (Ubuntu 14.10 開始 預設 systemd)
我昨晚想到了前面大大的问题,应该是开机时还没启动ns和nam应用,的确我的newservice.sh中需要调用ns,需要nam图形界面启动,所以我昨晚自己尝试着把ns和nam加入了开机启动项里,但没有成功,现在又只能来请教你们了,因为是实验性的newservice,所以代码很简单,如下:
rc.local末端增加代码

代码: 全选

/opt/newservice.sh
exit 0
newservice.sh

代码: 全选

#!/bin/bash
cd /mnt/hgfs/shared
ns exercise1.txt
exit 0
我觉得问题就在这,能有办法开机自动先启动ns仿真和nam图形界面吗?谢谢大大。

附带newservice想要实现的网络仿真图片:
附件
newser1.png
poloshiao
论坛版主
帖子: 18279
注册时间: 2009-08-04 16:33

Re: [求助,很急]ubuntu开机自动运行脚本问题

#21

帖子 poloshiao » 2017-02-10 19:01

的确我的newservice.sh中需要调用ns,需要nam图形界面启动
1. 開機程序 進行到讀取 /etc/rc.local 時 尚未啟動 X Windows 所以 無法跑任何圖形程式
1-1. 意思是 /etc/rc.local 裡面 含有任何啟動圖形程式的指令 可能無法執行 ?

2. sudo ls -Al /bin | grep sh
lrwxrwxrwx 1 root root 4 2月 18 2016 sh -> dash
2-1. 意思是 在 Ubuntu 執行 sh 實際上預設是執行 dash
newservice.sh
代碼:
#!/bin/bash
cd /mnt/hgfs/shared
ns exercise1.txt
exit 0
在rc.local上加命令语句 sh ~/Desktop/newservice.sh,没有用...
2-2. 開機程序 進行到讀取 /etc/rc.local 時 sh 是調用 dash
輸入密碼並成功登入桌面進程後 啟動的 shell 預設是 /bin/bash

2-3. 這裡 實際作用的 到底是 dash 還是 bash ?
請確認
sh ~/Desktop/newservice.sh
3. 試試 改為 絕對路徑
/bin/sh /absolute-path/newservice.sh

/bin/dash /absolute-path/newservice.sh

/bin/bash /absolute-path/newservice.sh
看看 何者有效
头像
vickycq
帖子: 4507
注册时间: 2011-03-20 13:12
系统: Debian
来自: 山东省寿光县
联系:

Re: [求助,很急]ubuntu开机自动运行脚本问题

#22

帖子 vickycq » 2017-02-10 19:09

ruby_yu 写了:所以我昨晚自己尝试着把ns和nam加入了开机启动项里,但没有成功
加入何处的“开机启动项里”
ruby_yu 写了:我觉得问题就在这,能有办法开机自动先启动ns仿真和nam图形界面吗
从图中看,ns 会自动启动 nam
先尝试加入桌面环境的自启中,如下图所示
图片
若无效,再发帖说明,讨论使用其他办法
Debian 中文论坛 - forums.debiancn.org
欢迎所有 Debian GNU/Linux 用户
ruby_yu
帖子: 18
注册时间: 2017-02-09 18:56
系统: windows7

Re: [求助,很急]ubuntu开机自动运行脚本问题

#23

帖子 ruby_yu » 2017-02-10 19:16

vickycq 写了:
ruby_yu 写了:所以我昨晚自己尝试着把ns和nam加入了开机启动项里,但没有成功
加入何处的“开机启动项里”
ruby_yu 写了:我觉得问题就在这,能有办法开机自动先启动ns仿真和nam图形界面吗
从图中看,ns 会自动启动 nam
先尝试加入桌面环境的自启中,如下图所示
图片
若无效,再发帖说明,讨论使用其他办法
昨晚已尝试,依旧不行..
附件
start2.png
ruby_yu
帖子: 18
注册时间: 2017-02-09 18:56
系统: windows7

Re: [求助,很急]ubuntu开机自动运行脚本问题

#24

帖子 ruby_yu » 2017-02-10 19:19

poloshiao 写了:
的确我的newservice.sh中需要调用ns,需要nam图形界面启动
開機程序 進行到讀取 /etc/rc.local 時 尚未啟動 X Windows 所以 無法跑任何圖形程式
意思是 /etc/rc.local 裡面 不能含有任何啟動圖形程式的指令
明白了,由于要求是在windows下做一仿真演示软件的开发,需要windows系统下调用ubuntu系统下的ns仿真输出,请问有什么方法能在windows系统下后台运行vmware虚拟机的情况下控制ubuntu输入控制台命令呢?
ruby_yu
帖子: 18
注册时间: 2017-02-09 18:56
系统: windows7

Re: [求助,很急]ubuntu开机自动运行脚本问题

#25

帖子 ruby_yu » 2017-02-10 19:21

vickycq 写了:
ruby_yu 写了:所以我昨晚自己尝试着把ns和nam加入了开机启动项里,但没有成功
加入何处的“开机启动项里”
ruby_yu 写了:我觉得问题就在这,能有办法开机自动先启动ns仿真和nam图形界面吗
从图中看,ns 会自动启动 nam
先尝试加入桌面环境的自启中,如下图所示
图片
若无效,再发帖说明,讨论使用其他办法
大大您好,其实本意是在windows下做一仿真演示软件的开发,需要windows系统下自制仿真演示软件GUI调用ubuntu系统下的ns仿真输出,请问有什么方法能在windows系统下后台运行vmware虚拟机的情况下控制ubuntu输入控制台命令呢?
poloshiao
论坛版主
帖子: 18279
注册时间: 2009-08-04 16:33

Re: [求助,很急]ubuntu开机自动运行脚本问题

#26

帖子 poloshiao » 2017-02-10 19:40

需要windows系统下调用ubuntu系统下的ns仿真输出
1. 如果你希望啟用圖形程式 寫一個 mydesighname.desktop 的啟動程式檔案
放在
~/.config/autostart

/etc/xdg/autostart
1-1. 這樣就能夠啟用圖形程式
1-2. 詳細參閱
1-2-1. http://askubuntu.com/questions/63407/wh ... nds-stored
1-2-2. http://stackoverflow.com/questions/8247 ... 52#8290652
1-2-3. https://help.ubuntu.com/community/Unity ... sktopFiles
1-2-4. https://specifications.freedesktop.org/ ... index.html

2. 以上適用於 Ubuntu 14.04 或 14.10 以後版本 upstart (不是 systemd)
2-1. Ubuntu 14.10 及 以後版本 開機預設 systemd
如果採用 systemd 以上可能不適用或需要微調
最好是採用 systemd 的 service 方法
ruby_yu
帖子: 18
注册时间: 2017-02-09 18:56
系统: windows7

Re: [求助,很急]ubuntu开机自动运行脚本问题

#27

帖子 ruby_yu » 2017-02-10 21:01

poloshiao 写了:
需要windows系统下调用ubuntu系统下的ns仿真输出
1. 如果你希望啟用圖形程式 寫一個 mydesighname.desktop 的啟動程式檔案
放在
~/.config/autostart

/etc/xdg/autostart
1-1. 這樣就能夠啟用圖形程式
1-2. 詳細參閱
1-2-1. http://askubuntu.com/questions/63407/wh ... nds-stored
1-2-2. http://stackoverflow.com/questions/8247 ... 52#8290652
1-2-3. https://help.ubuntu.com/community/Unity ... sktopFiles
1-2-4. https://specifications.freedesktop.org/ ... index.html

2. 以上適用於 Ubuntu 14.04 或 14.10 以後版本 upstart (不是 systemd)
2-1. Ubuntu 14.10 及 以後版本 開機預設 systemd
如果採用 systemd 以上可能不適用或需要微調
最好是採用 systemd 的 service 方法
谢谢资料,desktop编写完成,但遇到一个问题,自编ns2.desktop代码如下:

代码: 全选

[Desktop Entry]
Version=1.0
Name=NS2
Comment=Simulation
Exec=/home/ruby/Documents/newst.sh
Icon=/home/ruby/Pictures/foot.jpg
Terminal=false
Type=Application
Categories=Application;
给其可执行权限后,双击后无反应,请问这是什么原因呢?

是不是new.sh脚本的原因?

代码: 全选

#!/bin/sh
cd /mnt/hgfs/shared
ns exercise1.txt
此脚本,在终端输入/home/ruby/Documents/newst.sh可成功运行,但如果双击后选run或者run in terminal均不可运行,请问这是为什么呢?
头像
vickycq
帖子: 4507
注册时间: 2011-03-20 13:12
系统: Debian
来自: 山东省寿光县
联系:

Re: [求助,很急]ubuntu开机自动运行脚本问题

#28

帖子 vickycq » 2017-02-10 21:11

ruby_yu 写了:昨晚已尝试,依旧不行
如果是这样,可能还有别的原因。如楼上提到的原因,或其它环境问题。
如果不想再花时间琢磨,只想实现开机进入桌面后自动运行 /opt/newservice.sh,可考虑采用“笨”办法

假设你的用户名为 ruby_yu

1. 执行 sudo apt-get install expect
2. 在 23 楼图中所示位置添加以下指令作为启动项

代码: 全选

gnome-terminal -e /home/ruby_yu/ns_autorun
3. 建立文件 /home/ruby_yu/ns_autorun 加入以下内容

代码: 全选

#!/usr/bin/expect -f
spawn bash
send "/opt/newservice.sh\r"
interact
exit
4. 执行 chmod +x /home/ruby_yu/ns_autorun

这样效果跟手动打开终端执行命令差不多
Debian 中文论坛 - forums.debiancn.org
欢迎所有 Debian GNU/Linux 用户
ruby_yu
帖子: 18
注册时间: 2017-02-09 18:56
系统: windows7

Re: [求助,很急]ubuntu开机自动运行脚本问题

#29

帖子 ruby_yu » 2017-02-10 21:26

vickycq 写了:
ruby_yu 写了:昨晚已尝试,依旧不行
如果是这样,可能还有别的原因。如楼上提到的原因,或其它环境问题。
如果不想再花时间琢磨,只想实现开机进入桌面后自动运行 /opt/newservice.sh,可考虑采用“笨”办法

假设你的用户名为 ruby_yu

1. 执行 sudo apt-get install expect
2. 在 23 楼图中所示位置添加以下指令作为启动项

代码: 全选

gnome-terminal -e /home/ruby_yu/ns_autorun
3. 建立文件 /home/ruby_yu/ns_autorun 加入以下内容

代码: 全选

#!/usr/bin/expect -f
spawn bash
send "/opt/newservice.sh\r"
interact
exit
4. 执行 chmod +x /home/ruby_yu/ns_autorun

这样效果跟手动打开终端执行命令差不多
23楼图中?23楼不是startup application吗?在哪里添加指令作为启动项呢?能否详细说一下
头像
vickycq
帖子: 4507
注册时间: 2011-03-20 13:12
系统: Debian
来自: 山东省寿光县
联系:

Re: [求助,很急]ubuntu开机自动运行脚本问题

#30

帖子 vickycq » 2017-02-10 21:36

ruby_yu 写了:23楼图中?23楼不是startup application吗?在哪里添加指令作为启动项呢?能否详细说一下
1. 点击 Add
2. 在 'Command' 一栏输入命令(gnome-terminal -e /home/ruby_yu/ns_autorun),"Name","Comment" 随意
3. 点击 Add

如图:
图片
Debian 中文论坛 - forums.debiancn.org
欢迎所有 Debian GNU/Linux 用户
回复