我正在尝试将服务器设置为在启动时运行(Raspberry Pi)-服务器调用了一个脚本,该脚本调用了一个脚本...除非它们不触发。
crontab -e
添加cron作业并编写@reboot python3 /path/to/my_server.py
(也已在行尾使用&
进行了测试)...效果很好。my_server.py
使用httpd.server_forever()
在几个端点上监听……效果很好。subprocess.Popen(['python3', '/path/to/my_script.py'])
。my_script.py
然后运行subprocess.Popen(['qgis'])
(也尝试过shell=True
)。但是,QGIS
尚未开始。
这仅在尝试使用cron作业在启动时运行所有内容时发生。如果我手动打开终端并运行python3 /path/to/my_server.py
,那么一切都会按预期进行。我认为这与...未在shell /终端中运行-可能是Popen
的行为有关?
答案 0 :(得分:0)
问题是 class SynchList {
private int sum = 0;
private final int MOD = 3;
private int compare;
private final int LIMIT = 1000;
private ArrayList<Integer> list = new ArrayList<Integer>();
public synchronized void populate( int compare) throws InterruptedException{
for(int i=0; i<=LIMIT; i++){
if (i%this.MOD == compare){
list.add(i);
}
}
}
public synchronized void sum( int compare ) throws InterruptedException{
for (Integer ger : list){
if (ger%MOD == compare){
sum+=ger;
}
System.out.println( sum );
}
}
}
class Tst extends Thread {
int compare;
SynchList synchList;
public Tst(int compare, SynchList synchList)
{
this.compare= compare;
this.synchList = synchList;
}
@Override
public void run(){
try {
synchList.populate( compare );
synchList.sum( compare );
} catch (InterruptedException ex) {
Logger.getLogger(Tst.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
public class Main
{
public static void main(String[] args) {
SynchList synchList = new SynchList();
Tst tst1 = new Tst( 0 , synchList );
tst1.start();
Tst tst2 = new Tst( 1, synchList );
tst2.start();
Tst tst3 = new Tst( 2, synchList );
tst3.start();
}
}
要求x服务器正在运行,而QGIS
默认情况下将不具有该服务器。
修复:将cron
项更改为cron
,一切正常!