小编Yan*_*SSE的帖子

在crontab的shell脚本中使用python3

我尝试使用运行python3脚本的crontab运行shell脚本.crontab用于用户组.现在它运行脚本但不运行其中的python3脚本.我尝试调试它,但我无法弄清楚会发生什么.它可能是一个权限问题或路径问题,但我无法弄清楚.这是行crontab

*/5 * * * * /home/group_name/path/to/script/run.sh
Run Code Online (Sandbox Code Playgroud)

正如我所说的cron作业被执行或者至少那就是我的想法,因为当我跑步时sudo grep CRON /var/log/syslog我会得到像这样的行

 Feb 16 20:35:01 ip-**-**-*-*** CRON[4947]: (group_name) CMD (/home/group_name/path/to/script/run.sh)
Run Code Online (Sandbox Code Playgroud)

在下面我也得到一条可能与问题有关的线

Feb 16 20:35:01 ip-**-**-*-*** CRON[4946]: (CRON) info (No MTA installed, discarding output)
Run Code Online (Sandbox Code Playgroud)

最后run.sh看起来像这样

#!/bin/bash

# get path to script and path to script directory
SCRIPT=$(readlink -f "$0")
SCRIPTPATH=$(dirname "$SCRIPT")

echo "set directory"
cd "$SCRIPTPATH"

echo "run first script"
/usr/bin/python3 ./first_script.py > ./log1.txt
Run Code Online (Sandbox Code Playgroud)

但是当cron作业执行时没有任何反应,当我手动运行它时,数据库的cahnges按预期发生.该集团拥有与我相同的权利.shell文件可以由我执行,组和python文件不能由我执行,所以我不知道为什么该组需要这个.

PS:我想在shell中执行python脚本,因为我们有很多脚本,有时会有很多参数,因此crontab会变得人满为患,而且某些脚本必须以特定的顺序执行.

编辑:在我手动运行它exec >> /tmp/output 2>&1之后#! /bin.bash写入回声后立即添加/tmp/output,但不是在我在cron中运行时,而不是在运行任何python脚本之前运行它.

直接从cron运行其中一个python脚本,但即使我复制粘贴与在cron中工作的行完全相同的行,也没有任何反应.

python unix cron usergroups

11
推荐指数
1
解决办法
1212
查看次数

如果任何任务失败,如何将Airflow DAG运行标记为失败?

如果任何任务失败,是否有可能使Airflow DAG失败?

我通常在DAG的末尾有一些清理任务,而现在,无论何时最后一个任务成功,整个DAG都被标记为成功。

airflow

8
推荐指数
1
解决办法
2515
查看次数

使用Angular2中标记的

我正在尝试用Angular2制作一个简单的Markdown内联编辑器.我尝试了几种方法,但似乎都没有效果.我安装了npm标记,现在可以在项目node_modules目录中看到它.我可以导入它,它被netbeans识别.现在,当我使用它没有任何作用,如果我打开firefox debuger然后我发现localhost:3000 /标记未找到.

我把降价转换器放在一个服务中.看起来如下:

import { Injectable } from 'angular2/core';

import * as marked from 'marked';

interface IMarkdownConfig {
  sanitize?: boolean,
  gfm?: boolean,
  breaks?: boolean,
  smartypants?: boolean
}

@Injectable()
export class MarkdownService {
  //private md: MarkedStatic;

  constructor() {
    //this.md = marked.setOptions({});
  }

  setConfig(config: IMarkdownConfig) {
   // this.md = marked.setOptions(config);
  }

  convert(markdown: string): string {
    if(!markdown) {
      return '';
    }
    return markdown;
    //return this.md.parse(markdown);
  }
}
Run Code Online (Sandbox Code Playgroud)

像这样使用一切正常,除了降价没有翻译.如果我用md取消注释所有行,它就会停止工作.我正在使用它的组件看起来像这样:

import {Component, Input, OnInit } from 'angular2/core';
import {RouteParams} from 'angular2/router';

import {MarkdownService}  from …
Run Code Online (Sandbox Code Playgroud)

javascript-marked angular

6
推荐指数
2
解决办法
6066
查看次数

Airflow日志重定向转到localhost

我在EC2上的docker容器中运行气流.当我尝试访问气流UI中的任务日志时,它将我重定向到localhost,然后我必须用EC2 ip替换localhost以查看日志.这样可行,但如果我不必每次都更改地址会更好.

我的问题是,我可以改变这种行为,如果是,在哪里?

我在这个网站上搜索了一段时间,但我能找到的只是人们对日志本身有问题,但没有这个重定向问题.我以为我会找到一些东西,airflow.cfg但我无法弄清楚这是不是正确的地方.

这是我的airflow.cfg,我可以根据需要发布任何其他文件:

[core]
# The home folder for airflow, default is ~/airflow
airflow_home = /usr/local/airflow

# The folder where your airflow pipelines live, most likely a
# subfolder in a code repository
# This path must be absolute
dags_folder = /usr/local/airflow/dags

# The folder where airflow should store its log files
# This path must be absolute
base_log_folder = /usr/local/airflow/logs

# Airflow can store logs remotely in AWS S3 or Google Cloud Storage. …
Run Code Online (Sandbox Code Playgroud)

airflow

5
推荐指数
1
解决办法
3392
查看次数

Airflow不会将日志写入s3

我尝试了不同的方法配置Airflow 1.9将日志写入s3,但它只是忽略它.我发现很多人在这样做之后阅读日志时遇到了问题,但我的问题是日志仍然是本地的.我可以毫无问题地阅读它们,但它们不在指定的s3存储桶中.

我尝试的是首先写入airflow.cfg文件

# Airflow can store logs remotely in AWS S3 or Google Cloud Storage. Users
# must supply an Airflow connection id that provides access to the storage
# location.
remote_base_log_folder = s3://bucketname/logs
remote_log_conn_id = aws
encrypt_s3_logs = False
Run Code Online (Sandbox Code Playgroud)

然后我尝试设置环境变量

AIRFLOW__CORE__REMOTE_BASE_LOG_FOLDER=s3://bucketname/logs
AIRFLOW__CORE__REMOTE_LOG_CONN_ID=aws
AIRFLOW__CORE__ENCRYPT_S3_LOGS=False
Run Code Online (Sandbox Code Playgroud)

但是它会被忽略,日志文件仍然是本地的.

我从一个容器运行气流,我调整了https://github.com/puckel/docker-airflow到我的情况,但它不会将日志写入s3.我使用aws连接写入dags中的存储桶,这可以工作,但无论是在EC2上还是在我的机器上本地运行,Logs都保持在本地状态.

amazon-s3 airflow

5
推荐指数
1
解决办法
752
查看次数