Loading [MathJax]/jax/output/CommonHTML/config.js
社区首页 >问答首页 >无法通过sh / crontab启动python程序

无法通过sh / crontab启动python程序
EN

Stack Overflow用户
提问于 2016-01-02 02:54:52
回答 1查看 1.4K关注 0票数 0

我尝试从脚本或cronjob启动一个名为ocrmypdf的python程序。

它从终点站运行得很好,

代码语言:javascript
代码运行次数:0
复制
pi@piscan:~ $ ocrmypdf 
usage: ocrmypdf [-h] [--verbose [VERBOSE]] [--version] [-L FILE] [-j N] [-n]
            [--flowchart FILE] [-l LANGUAGE] [--title TITLE]
            [--author AUTHOR] [--subject SUBJECT] [--keywords KEYWORDS]
            [-d] [-c] [-i] [--oversample DPI] [-f] [-s]
            [--skip-big MPixels] [--tesseract-config TESSERACT_CONFIG]
            [--pdf-renderer {auto,tesseract,hocr}]
            [--tesseract-timeout TESSERACT_TIMEOUT] [-k] [-g]
            input_file output_file
ocrmypdf: error: the following arguments are required: input_file, output_file

但从另一个壳,它打破了我不明白的原因。

代码语言:javascript
代码运行次数:0
复制
pi@piscan:~ $ sh ocrmypdf
sh: 0: Can't open ocrmypdf
pi@piscan:~ $ which ocrmypdf 
/usr/local/bin/ocrmypdf
pi@piscan:~ $ sh $(which ocrmypdf)
import: unable to open X server `' @ error/import.c/ImportImageCommand/364.
import: unable to open X server `' @ error/import.c/ImportImageCommand/364.
from: can't read /var/mail/ocrmypdf.main
/usr/local/bin/ocrmypdf: 10: /usr/local/bin/ocrmypdf: Syntax error: "(" unexpected (expecting "then")

这是执行的代码:

代码语言:javascript
代码运行次数:0
复制
pi@piscan:~ $ cat $(which ocrmypdf)
#!/usr/bin/python3

# -*- coding: utf-8 -*-
import re
import sys

from ocrmypdf.main import run_pipeline

if __name__ == '__main__':
    sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0])
    sys.exit(run_pipeline())
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-01-02 02:58:17

当键入sh ocrmypdf时,请sh shell (可能是/bin/sh,通常是指向/bin/bash/bin/dash的符号链接)来解释ocrmypdf文件,这是一个/bin/dash脚本,而不是一个shell脚本。

因此,要么运行python ocrmypdfpython $(which ocrmypdf),要么使ocrmypdf脚本可执行。然后(至少在Linux上) execve(2)启动python解释器,因为谢邦

当然,ocrmypdf脚本应该在PATH

crontab作业不在桌面环境中运行。因此,他们无法访问您的X11服务器Xorg (或者如果您正在使用韦兰 )。您可以显式地设置DISPLAY变量,但我不建议这样做。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34565080

复制
相关文章
【Linux】crontab使用举例——.sh脚本与Python脚本
crontab是Linux一个定时执行特定任务的程序,网上也有很多使用教程,在这里举一个例子,抛砖引玉。
蛮三刀酱
2019/03/26
2.6K0
crontab - 解决 mac 下通过 crontab 设置了 Python 脚本的定时任务却无法运行
https://www.cnblogs.com/poloyy/p/15565875.html
小菠萝测试笔记
2021/11/18
1.2K0
java启动和停止sh
版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
奋飛
2019/08/15
1.5K0
Mac实现 双击启动sh文件
特殊说明: 以上文章,均是我实际操作,写出来的笔记资料,不会盗用别人文章!烦请各位,请勿直接盗用!转载记得标注来源!
收心
2022/10/31
2.8K0
使用process_monitor.sh监控hadoop进程的crontab配置
可以从下列链接找到process_monitor.sh: https://github.com/eyjian/mooon/blob/master/common_library/shell/process_monitor.sh 假设: 1) java安装目录为/data/jdk 2) 监控脚本process_monitor监控脚本process_monitor.sh安装目录为/usr/local/bin 3) hadoop安装目录为/data/hadoop 4) hbase安装目录为/data/hbase 5) zookeeper安装目录为/data/zookeeper 可以通过jps查看到进程ID,然后使用kill命令杀死进程,查看监控重拉起效果。 process_monitor.sh每隔2秒(由变量monitor_interval指定)检查一次,发现进程不存在时,立即启动。 假设运行用户为root,则process_monitor.sh的日志文件为/tmp/process_monitor-root.log, 假设运行用户为test,则process_monitor.sh的日志文件为/tmp/process_monitor-test.log,以此类推。 可以通过tail -f观察process_monitor.sh的日志,来了解process_monitor.sh的运行。 process_monitor.sh带两个参数,第一个参数是被监控的进程对象,process_monitor.sh依靠第二个参数重启被监控对象。 第一个参数又分两部分,第一个空格前的部分,和空格之后的部分。 第一部分为被监控对象的进程名称,对于java程序,进程名是java,而不是jar包的名称。 第二部分为参数部分,可有可无,但正是通过它来区分不同的被监控对象,对于java、shell程序等是必须的。 另外,process_monitor.sh对参数部分是采取模糊部分匹配方式。 可以通过ps aux命令来确定进程名称和参数。 crontab配置如下: # 监控HDFS NameNode * * * * * /usr/local/bin/process_monitor.sh "/data/jdk/bin/java -Dproc_namenode" "/data/hadoop/sbin/hadoop-daemon.sh start namenode" # 监控HDFS切换主备NameNode程序 * * * * * /usr/local/bin/process_monitor.sh "/data/jdk/bin/java -Dproc_zkfc" "/data/hadoop/sbin/hadoop-daemon.sh start zkfc" # 监控HDFS JournalNode * * * * * /usr/local/bin/process_monitor.sh "/data/jdk/bin/java -Dproc_journalnode" "/data/hadoop/sbin/hadoop-daemon.sh start journalnode" # 监控HDFS DataNode * * * * * /usr/local/bin/process_monitor.sh "/data/jdk/bin/java -Dproc_datanode" "/data/hadoop/sbin/hadoop-daemon.sh start datanode" # 监控HBase Master * * * * * /usr/local/bin/process_monitor.sh "/data/jdk/bin/java -Dproc_master" "/data/hbase/bin/hbase-daemon.sh start master" # 监控HBase thrift2 * * * * * /usr/local/bin/process_monitor.sh "/data/jdk/bin/java -Dproc_thrift2" "/data/hbase/bin/hbase-daemon.sh start thrift2 --framed -nonblocking" # 监控ZooKeeper * * * * * /usr/local/bin/process_monitor.sh "/data/jdk/bin/java -Dzookeeper" "/data/zookeeper/bin/zkServer.sh start" # 监控HBase regionserver * * * * * /usr/local/bin/process_monitor.sh "/data/jd
一见
2018/08/06
7680
DBA必备技能:通过truss跟踪解决监听无法启动案例
作者简介:刘斌,云和恩墨高级技术专家,擅长数据库故障诊断分析,数据库性能优化,自动化运维开发,坚持学习、写作、分享, 在Oracle DBA的日常工作中,通过各种跟踪手段,从数据库内外部发现问题,最终
数据和云
2018/03/07
1.3K0
DBA必备技能:通过truss跟踪解决监听无法启动案例
通过celery提高crontab配置效率
今天在接入备份任务配置的时候也是一波三折,解决了业务元数据的问题,也逐步熟悉了业务,对于现有的备份情况会越来越有把握。
jeanron100
2018/11/05
9300
SecureCRT无法启动
      C:\Users\Bruce\AppData\Roaming\SecureCRT.dmp 
黑泽君
2018/12/11
10.2K0
SecureCRT无法启动
Hmaster无法启动
启动hbase时问题列表: 1 查看hbase-hadoop-master-ubuntu118.log,发现其中的错误为 2012-09-02 22:59:58,099 INFO org.apache.hadoop.hbase.ipc.HBaseRpcMetrics: Initializing RPC Metrics with hostName=HMaster, port=60000 2012-09-02 22:59:58,217 ERROR org.apache.hadoop.hbase.master.H
闵开慧
2018/03/30
4.5K0
Crontab脚本无法正常执行问题
Crontab执行时若有异常首先要到/var/log下查看cron日志文件文件(vi /var/log/cron),也可以使用用tail -f /var/spool/mail/root 查看最近的crontab执行情况。通常在日志中能够查看到异常都是脚本写的不正确导致的,可以手动执行看下具体原因。若在日志中看到脚本正常执行,但是无正确的预期结果,则无非是两种原因:
我是李超人
2020/08/21
2.2K0
python crontab 坑
最近用Python写了一些数据统计的脚本,并使用crontab自动执行,但是配置crontab总是要过几个坑才行的,这里总结一下这次遇到的坑。
有福
2018/08/28
1K0
Python实战(5)Python和Sh
Python使用tarfile模块,Python不开多线程的情况两者做文件打包压缩对比。
py3study
2020/01/08
5520
Nginx 无法启动
由于不同版本的Nginx重复安装,导致各种奇怪的问题发生,Nginx也无法启动,只好全部卸载nginx。 卸载命令
用户2657851
2020/03/04
3K0
python 计算 crontab 下次
python3.6 -m pip install croniter import croniter import datetime def run_get_next_time(sched): now = datetime.datetime.now() cron = croniter.croniter(sched, now) return [cron.get_next(datetime.datetime).strftime("%Y-%m-%d %H:%M")][0] print(r
py3study
2020/01/08
6670
python 操作crontab 实现
脚本文件 06292000.py,不要用相对路径,因为crontab执行时,默认目录是你python的目录。不是你脚本文件
py3study
2020/01/03
9660
python  操作crontab 实现
Flash Builder无法正常启动应用程序的原因
去掉编译器参数就可以了, 因为Flash Builer默认使用的是SDK 4.0,而目前开发中只需要使用3.5就可以了,加那个参数
meteoric
2018/11/15
1.4K0
启动项目成功后,无法通过ip访问解决方案
将dev-server.js下的var server = app.listen(port, "127.0.0.1")修改为“0.0.0.0” ,如下图所示 image.png
24-丰总
2018/07/09
1.3K0
Linux .sh脚本 启动、停止、重启、状态 Jar包
windows请参考:https://www.zanglikun.com/5620.html
收心
2022/01/19
10.1K0
Linux .sh脚本 启动、停止、重启、状态 Jar包
RTSP协议视频平台EasyNVR无法后台启动导致程序无法运行怎么解决?
我们的视频平台都是需要在系统中后台启动运行的,在线观看直播都需要在后台中运行程序。今天在客户的现场遇到了一个这样的问题,客户的EasyNVR不可以进行后台启动,只能在前台窗口启动,就连Uninstall都不能运行。
EasyNVR
2020/08/11
9570
RTSP协议视频平台EasyNVR无法后台启动导致程序无法运行怎么解决?
crontab定时任务不执行的原因
crontab不是Linux内核的功能,而是依赖一个crond服务,这个服务可以启动当然也可以停止。如果停止了就无法执行任何定时任务了,解决的方法是打开它:
全栈程序员站长
2022/09/09
5.9K0

相似问题

通过sh脚本启动jar正常,但通过crontab提供ClassFormatError

12

如何用crontab启动sh脚本?

26

Crontab未启动python程序

11

通过crontab从Python启动外部GUI应用程序

133

无法使用crontab运行.sh脚本

118
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文