运行 ruby 登录 xfce 时的脚本
run ruby script at login xfce
我正在使用 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'.
我的ruby代码有问题吗?
根据生成错误的行号,打开网络套接字时超时,因此当您的服务 运行 时网络似乎还没有准备好。尝试此 [Unit]
部分,以便服务将在网络初始化后启动:
[Unit]
Description=Example systemd service.
Requires=network-online.target
After=network-online.target
我正在使用 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'.
我的ruby代码有问题吗?
根据生成错误的行号,打开网络套接字时超时,因此当您的服务 运行 时网络似乎还没有准备好。尝试此 [Unit]
部分,以便服务将在网络初始化后启动:
[Unit]
Description=Example systemd service.
Requires=network-online.target
After=network-online.target