Điểm:0

Crontab không chạy tập lệnh python Đã thử nhiều bản sửa lỗi Mới sử dụng thiết bị đầu cuối, hãy dễ dàng với tôi

lá cờ ve

Xin chào tất cả và cảm ơn bạn đã đọc tôi sẽ thảo luận bên dưới.

Tôi có một tập lệnh python đơn giản in một dữ kiện ngẫu nhiên từ reddit vào thiết bị đầu cuối. Tôi đang kiểm tra vùng nước của thiết bị đầu cuối trong khi học python.

Tôi đã thử thay đổi quyền của mình để truy cập thư mục /usr/bin/. Không thành công

Tôi đã tạo một tập lệnh reddit.py mới bên trong thư mục/usr/bin khi tôi đọc ở nơi khác rằng crontab chỉ chạy từ thư mục chính của nó và nếu cả hai đường dẫn được cung cấp trong tệp crontab thì điều này sẽ giải quyết được vấn đề khi nó chạy. Một lần nữa không thành công.

Tôi đã cấp cho mình đầy đủ các quyền đọc, viết và thực thi trên/ngoài 'proc' & 'sys' đã bị từ chối.

Nó sẽ chạy nếu tôi viết đường dẫn trong thiết bị đầu cuối và in một dữ kiện ngẫu nhiên từ TIL từ reddit.

Sẽ không chạy qua crontab, bất kỳ thông tin nào khác mà bất kỳ ai có thể cung cấp sẽ được đón nhận rất nhiều và nếu bạn có thể vui lòng cung cấp bất kỳ chi tiết đơn giản nào vì tôi mới bắt đầu với điều này và tôi đang hiểu mọi thứ một cách chậm rãi nhưng chắc chắn. Một lần nữa cảm ơn rất nhiều. Tôi sẽ cung cấp một bản sao của tập lệnh bên dưới.

Tôi đang chạy Debian 10 trên Chromebook AMD 64.

#! /usr/bin/env con trăn
yêu cầu nhập khẩu
nhập json 
 
subreddit = 'hôm nay đã học'
đếm = 1
khung thời gian = 'ngày' #giờ, ngày, tuần, tháng, năm, tất cả
danh sách = 'ngẫu nhiên' # gây tranh cãi, tốt nhất, hấp dẫn, mới, ngẫu nhiên, tăng, hàng đầu
 
def get_reddit(subreddit,count):
    cố gắng:
        base_url = f'https://www.reddit.com/r/{subreddit}/{listing}.json?count={count}&t={timeframe}'
        request = request.get(base_url, headers = {'Tác nhân người dùng': 'yourbot'})
    ngoại trừ:
        print('Đã xảy ra lỗi')
    trả lại request.json()
 
top_post = get_reddit(subreddit,count)
 
nếu liệt kê != 'ngẫu nhiên':
    title = top_post['data']['children'][0]['data']['title']
    url = top_post['data']['children'][0]['data']['url']
khác:
    title = top_post[0]['data']['children'][0]['data']['title']
    url = top_post[0]['data']['children'][0]['data']['url']
 
 
in(f'{title}\n{url}')

Tập tin crontab:

*/5 * * * * /usr/bin/python /usr/bin/reddit.py >dev/null 2>&1

Cảm ơn, tôi đã cố gắng giải quyết vấn đề này trong 12 giờ nhưng vẫn không thành công. Mặc dù vậy, nó đang giúp tôi trở nên thoải mái với môi trường và mệnh lệnh! Vì vậy, lót bạc =)

codlord avatar
lá cờ ru
Nó phải là `/dev/null` nếu bạn muốn chuyển hướng đầu ra tới đó. Nhưng tại sao không chuyển hướng đến một tệp nhật ký và sau đó tệp nhật ký sẽ chứa các thông báo/lỗi từ lệnh/tập lệnh python của bạn. Nếu bạn không nhận được bất kỳ thông báo/lỗi có ý nghĩa nào thì hãy thêm chúng vào tập lệnh của mình để bạn có thể biết nó đang làm gì và sai ở đâu.
lá cờ hr
*"in một dữ kiện ngẫu nhiên từ reddit vào thiết bị đầu cuối"* cron không biết về bất kỳ thiết bị đầu cuối nào có thể đang mở, vì vậy bất kỳ đầu ra nào sẽ được gửi đến chủ sở hữu crontab hoặc bị loại bỏ.
Điểm:1
lá cờ in

Việc thay đổi quyền trên / hoặc /usr/bin hoặc đặt các tệp trong các thư mục đó là một ý tưởng cực kỳ tồi. Nếu bạn định cài đặt một chương trình cục bộ như thế này ở cấp hệ thống, thì nó sẽ nằm trong /usr/local/bin

Cũng không cần thiết phải làm điều này để thực hiện những gì bạn đang cố gắng, nó không nhất thiết phải nằm trong thư mục hệ thống để chạy từ cron, đặc biệt là cron của người dùng. Bạn có thể đặt tệp này trong thư mục chính của mình và chỉ cần cung cấp đường dẫn đầy đủ đến tệp đó như bạn đã thực hiện trong mục nhập crontab.

Thông thường, cron gửi cho bạn các lỗi khi mọi thứ không thành công. Tuy nhiên, có thể bạn chưa cài đặt thư và dù sao bạn cũng đang vô hiệu hóa bất kỳ lỗi ghi nhật ký nào với >dev/null 2>&1

Rất có thể nếu bạn khắc phục những điều này và nắm bắt lỗi đang ngăn tập lệnh của bạn chạy, bạn sẽ tìm ra vấn đề thực sự là gì. (Nếu bạn không thể tìm ra lỗi sau khi nhận được chúng, hãy thêm chúng vào câu hỏi của bạn.)

Mentalist avatar
lá cờ ve
Cảm ơn sự giúp đỡ của bạn, thông tin này rất hữu ích, tôi không biết đầy đủ rằng việc ghi nhật ký lỗi >dev/null 2>&1 bị vô hiệu hóa. Tôi nhận thấy đây là một phần của bản sửa lỗi cho sự cố crontab, nó là một phần của lỗi #!/usr/ bin/env bổ sung python.
Mentalist avatar
lá cờ ve
Xin lỗi vì nghe có vẻ như một người hoàn toàn mới, nhật ký lỗi - Tôi sẽ phải cài đặt ứng dụng thư khách/kiểm tra xem cái này đã được cài đặt chưa? Khi điều này được thực hiện, tôi có thể xóa dòng đó khỏi tập lệnh và kiểm tra thư của mình để xem nhật ký lỗi từ tệp crontab, điều này có tự động không khi tôi xóa mã khỏi tập lệnh và nó sẽ gửi tệp nhật ký đến địa chỉ thư của tôi sau khi tôi tìm ra tất cả mà ra? cảm ơn một lần nữa vì sự giúp đỡ của bạn nó được đánh giá rất cao.
Mentalist avatar
lá cờ ve
Tôi đã làm rõ rằng tôi đã cài đặt Mail, có một số nhật ký lỗi, nếu bạn có một tác vụ đã lên lịch chạy cứ sau 2 phút thì sẽ có một số email haha, cảm ơn vì điều này, tôi sẽ xem qua nó từ đây và quay lại! Có vẻ như không thể tìm thấy python nên sẽ thử một vài bản sửa lỗi, cảm ơn mọi người một lần nữa!
user10489 avatar
lá cờ in
Chúc may mắn và hạnh phúc săn bắn!

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.