ruby - 在登录 xfce 时运行 ruby 脚本
问题描述
我正在使用 manjaro,我想在登录后运行一个 ruby 脚本。
这是我的脚本:
def get_line(filename, lineno)
File.open(filename,'r') do |f|
f.gets until f.lineno == lineno - 1
f.gets
end
end
filename = "list.md"
filepath = File.join(File.dirname(__FILE__), filename)
count = %x{cat #{filepath} | sed '/^\s*$/d' | wc -l }.to_i
random_element = rand((1..count))
line = get_line(filepath, random_element)
options = { :address => "smtp.gmail.com",
:port => 587,
:user_name => 'xxxx@gmail.com',
:password => 'xxxxx',
:authentication => 'plain',
:enable_starttls_auto => true }
Mail.defaults do
delivery_method :smtp, options
end
Mail.deliver do
to 'xxxxx@gmail.com'
from 'xxxxxx@gmail.com'
subject 'Test'
body "#{line}"
end
我试过了/etc/profile.d
,.bash_profile
作为服务/etc/systemd/system
[Unit]
Description=Example systemd service.
[Service]
Type=simple
ExecStart=/usr/bin/ruby /home/dnl/Documents/git/send_mail_reminders/send_mail.rb
[Install]
WantedBy=multi-user.target
我做了服务启动,状态,启用然后重新启动。
服务状态的输出
● autostart.service - Example systemd service.
Loaded: loaded (/etc/systemd/system/autostart.service; enabled; vendor preset: disabled)
Active: failed (Result: exit-code) since Sun 2020-08-16 13:28:10 CEST; 5min ago
Process: 439 ExecStart=/usr/bin/ruby /home/dnl/Documents/git/send_mail_reminders/send_mail.rb (code=exited, status=1/FAILURE)
Main PID: 439 (code=exited, status=1/FAILURE)
Aug 16 13:28:10 dnl ruby[439]: from /usr/lib/ruby/2.7.0/net/smtp.rb:548:in `do_start'
Aug 16 13:28:10 dnl ruby[439]: from /usr/lib/ruby/2.7.0/net/smtp.rb:518:in `start'
Aug 16 13:28:10 dnl ruby[439]: from /usr/lib/ruby/gems/2.7.0/gems/mail-2.7.1/lib/mail/network/delivery_methods/smtp.rb:109:in `start_smtp_session'
Aug 16 13:28:10 dnl ruby[439]: from /usr/lib/ruby/gems/2.7.0/gems/mail-2.7.1/lib/mail/network/delivery_methods/smtp.rb:100:in `deliver!'
Aug 16 13:28:10 dnl ruby[439]: from /usr/lib/ruby/gems/2.7.0/gems/mail-2.7.1/lib/mail/message.rb:2159:in `do_delivery'
Aug 16 13:28:10 dnl ruby[439]: from /usr/lib/ruby/gems/2.7.0/gems/mail-2.7.1/lib/mail/message.rb:262:in `deliver'
Aug 16 13:28:10 dnl ruby[439]: from /usr/lib/ruby/gems/2.7.0/gems/mail-2.7.1/lib/mail/mail.rb:133:in `deliver'
Aug 16 13:28:10 dnl ruby[439]: from /home/dnl/Documents/git/send_mail_reminders/send_mail.rb:30:in `<main>'
Aug 16 13:28:10 dnl systemd[1]: autostart.service: Main process exited, code=exited, status=1/FAILURE
Aug 16 13:28:10 dnl systemd[1]: autostart.service: Failed with result 'exit-code'.
我的红宝石代码有问题吗?
解决方案
根据产生错误的行号,打开网络套接字时有超时,所以当您的服务运行时,似乎网络还没有准备好。试试这个[Unit]
部分,这样服务将在网络初始化后启动:
[Unit]
Description=Example systemd service.
Requires=network-online.target
After=network-online.target
推荐阅读
- reactjs - 如何防止 CreateReactApp 编译因 lint 错误而停止?
- openmdao - Openmdao - 优化时并行计算有限差分
- php - 将原始 PHP 站点转换为 Laravel
- python - AttributeError:模块“熊猫”没有属性“滚动”
- sql - T-SQL 左外连接选择前 1 - MAX
- module - 基于循环(子)模块依赖实现宏
- python - Python:无法从 FileStorage 对象读取
- node.js - 当我添加钩子以请求发出时,NodeJS response.on('data') 不会触发
- javascript - 悬停后显示图像,而不是单击
- php - 如何访问下一个数据?