Running Shell and Python Scripts (that write to files) with Launchd
I am surprised by the lack of information/videos on the internet about launchd. Anyways, I am fairly new to writing shell scripts and python in the Mac terminal, but am trying to automate a script to write the datetime every 20 seconds to a file.
Below is my plist file written under ~/Library/LaunchAgents.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN"
"http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>com.example.py.plist</string>
<key>RunAtLoad</key>
<true/>
<key>ProgramArguments</key>
<array>
<string>/Users/sammahle/bin/python_file</string>
</array>
<key>StartCalendarInterval</key>
<integer>20</integer>
</dict>
</plist>
The 'python_file' referenced in the script is
#!/usr/bin/python
import datetime
print 'Hello World'
datetime1 = str(datetime.datetime.now())
with open('file.txt','w') as f:
f.write(datetime1)
and when I do launchctl list I find " - 1 com.example.py.plist"
I ran the same thing for the shell script below and again received the status code "1", which according to LaunchD Plist not working means “Exit code 1 means the script exited with an error condition. If it exited with a 0 it would mean there were no errors.”
#!/bin/bash
echo "Hello World!" >> file.txt
My end goal is to run complex python scripts daily without having the program needing to be running all the time. If anyone knows a better solution (I choose launchd over cron because it is "preferred") please let me know.
python shell automation cron launchd
|
show 2 more comments
I am surprised by the lack of information/videos on the internet about launchd. Anyways, I am fairly new to writing shell scripts and python in the Mac terminal, but am trying to automate a script to write the datetime every 20 seconds to a file.
Below is my plist file written under ~/Library/LaunchAgents.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN"
"http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>com.example.py.plist</string>
<key>RunAtLoad</key>
<true/>
<key>ProgramArguments</key>
<array>
<string>/Users/sammahle/bin/python_file</string>
</array>
<key>StartCalendarInterval</key>
<integer>20</integer>
</dict>
</plist>
The 'python_file' referenced in the script is
#!/usr/bin/python
import datetime
print 'Hello World'
datetime1 = str(datetime.datetime.now())
with open('file.txt','w') as f:
f.write(datetime1)
and when I do launchctl list I find " - 1 com.example.py.plist"
I ran the same thing for the shell script below and again received the status code "1", which according to LaunchD Plist not working means “Exit code 1 means the script exited with an error condition. If it exited with a 0 it would mean there were no errors.”
#!/bin/bash
echo "Hello World!" >> file.txt
My end goal is to run complex python scripts daily without having the program needing to be running all the time. If anyone knows a better solution (I choose launchd over cron because it is "preferred") please let me know.
python shell automation cron launchd
Try replacingProgramArguments
withProgram
– Mark Setchell
Nov 13 '18 at 0:06
Tried that to no avail. Any other ideas?
– Sam Mahle
Nov 13 '18 at 1:16
Did you make your script executable? Start Terminal and runchmod +x /Users/sammahle/bin/python_file
– Mark Setchell
Nov 13 '18 at 7:15
Yes, do I have to edit the permission of the file I am writing to?
– Sam Mahle
Nov 13 '18 at 21:00
Three things... 1) Try writing to a file with an absolute path so you are sure where you are writing, e.g./tmp/file.txt
2) Open up the permissions on that file withchmod 777 /tmp/file.txt
3) Try running the script directly from the Terminal/Users/sammahle/bin/python_file
and make sure it works like that.
– Mark Setchell
Nov 13 '18 at 21:16
|
show 2 more comments
I am surprised by the lack of information/videos on the internet about launchd. Anyways, I am fairly new to writing shell scripts and python in the Mac terminal, but am trying to automate a script to write the datetime every 20 seconds to a file.
Below is my plist file written under ~/Library/LaunchAgents.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN"
"http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>com.example.py.plist</string>
<key>RunAtLoad</key>
<true/>
<key>ProgramArguments</key>
<array>
<string>/Users/sammahle/bin/python_file</string>
</array>
<key>StartCalendarInterval</key>
<integer>20</integer>
</dict>
</plist>
The 'python_file' referenced in the script is
#!/usr/bin/python
import datetime
print 'Hello World'
datetime1 = str(datetime.datetime.now())
with open('file.txt','w') as f:
f.write(datetime1)
and when I do launchctl list I find " - 1 com.example.py.plist"
I ran the same thing for the shell script below and again received the status code "1", which according to LaunchD Plist not working means “Exit code 1 means the script exited with an error condition. If it exited with a 0 it would mean there were no errors.”
#!/bin/bash
echo "Hello World!" >> file.txt
My end goal is to run complex python scripts daily without having the program needing to be running all the time. If anyone knows a better solution (I choose launchd over cron because it is "preferred") please let me know.
python shell automation cron launchd
I am surprised by the lack of information/videos on the internet about launchd. Anyways, I am fairly new to writing shell scripts and python in the Mac terminal, but am trying to automate a script to write the datetime every 20 seconds to a file.
Below is my plist file written under ~/Library/LaunchAgents.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN"
"http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>com.example.py.plist</string>
<key>RunAtLoad</key>
<true/>
<key>ProgramArguments</key>
<array>
<string>/Users/sammahle/bin/python_file</string>
</array>
<key>StartCalendarInterval</key>
<integer>20</integer>
</dict>
</plist>
The 'python_file' referenced in the script is
#!/usr/bin/python
import datetime
print 'Hello World'
datetime1 = str(datetime.datetime.now())
with open('file.txt','w') as f:
f.write(datetime1)
and when I do launchctl list I find " - 1 com.example.py.plist"
I ran the same thing for the shell script below and again received the status code "1", which according to LaunchD Plist not working means “Exit code 1 means the script exited with an error condition. If it exited with a 0 it would mean there were no errors.”
#!/bin/bash
echo "Hello World!" >> file.txt
My end goal is to run complex python scripts daily without having the program needing to be running all the time. If anyone knows a better solution (I choose launchd over cron because it is "preferred") please let me know.
python shell automation cron launchd
python shell automation cron launchd
asked Nov 12 '18 at 23:30
Sam Mahle
52
52
Try replacingProgramArguments
withProgram
– Mark Setchell
Nov 13 '18 at 0:06
Tried that to no avail. Any other ideas?
– Sam Mahle
Nov 13 '18 at 1:16
Did you make your script executable? Start Terminal and runchmod +x /Users/sammahle/bin/python_file
– Mark Setchell
Nov 13 '18 at 7:15
Yes, do I have to edit the permission of the file I am writing to?
– Sam Mahle
Nov 13 '18 at 21:00
Three things... 1) Try writing to a file with an absolute path so you are sure where you are writing, e.g./tmp/file.txt
2) Open up the permissions on that file withchmod 777 /tmp/file.txt
3) Try running the script directly from the Terminal/Users/sammahle/bin/python_file
and make sure it works like that.
– Mark Setchell
Nov 13 '18 at 21:16
|
show 2 more comments
Try replacingProgramArguments
withProgram
– Mark Setchell
Nov 13 '18 at 0:06
Tried that to no avail. Any other ideas?
– Sam Mahle
Nov 13 '18 at 1:16
Did you make your script executable? Start Terminal and runchmod +x /Users/sammahle/bin/python_file
– Mark Setchell
Nov 13 '18 at 7:15
Yes, do I have to edit the permission of the file I am writing to?
– Sam Mahle
Nov 13 '18 at 21:00
Three things... 1) Try writing to a file with an absolute path so you are sure where you are writing, e.g./tmp/file.txt
2) Open up the permissions on that file withchmod 777 /tmp/file.txt
3) Try running the script directly from the Terminal/Users/sammahle/bin/python_file
and make sure it works like that.
– Mark Setchell
Nov 13 '18 at 21:16
Try replacing
ProgramArguments
with Program
– Mark Setchell
Nov 13 '18 at 0:06
Try replacing
ProgramArguments
with Program
– Mark Setchell
Nov 13 '18 at 0:06
Tried that to no avail. Any other ideas?
– Sam Mahle
Nov 13 '18 at 1:16
Tried that to no avail. Any other ideas?
– Sam Mahle
Nov 13 '18 at 1:16
Did you make your script executable? Start Terminal and run
chmod +x /Users/sammahle/bin/python_file
– Mark Setchell
Nov 13 '18 at 7:15
Did you make your script executable? Start Terminal and run
chmod +x /Users/sammahle/bin/python_file
– Mark Setchell
Nov 13 '18 at 7:15
Yes, do I have to edit the permission of the file I am writing to?
– Sam Mahle
Nov 13 '18 at 21:00
Yes, do I have to edit the permission of the file I am writing to?
– Sam Mahle
Nov 13 '18 at 21:00
Three things... 1) Try writing to a file with an absolute path so you are sure where you are writing, e.g.
/tmp/file.txt
2) Open up the permissions on that file with chmod 777 /tmp/file.txt
3) Try running the script directly from the Terminal /Users/sammahle/bin/python_file
and make sure it works like that.– Mark Setchell
Nov 13 '18 at 21:16
Three things... 1) Try writing to a file with an absolute path so you are sure where you are writing, e.g.
/tmp/file.txt
2) Open up the permissions on that file with chmod 777 /tmp/file.txt
3) Try running the script directly from the Terminal /Users/sammahle/bin/python_file
and make sure it works like that.– Mark Setchell
Nov 13 '18 at 21:16
|
show 2 more comments
0
active
oldest
votes
Your Answer
StackExchange.ifUsing("editor", function ()
StackExchange.using("externalEditor", function ()
StackExchange.using("snippets", function ()
StackExchange.snippets.init();
);
);
, "code-snippets");
StackExchange.ready(function()
var channelOptions =
tags: "".split(" "),
id: "1"
;
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function()
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled)
StackExchange.using("snippets", function()
createEditor();
);
else
createEditor();
);
function createEditor()
StackExchange.prepareEditor(
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader:
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
,
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
);
);
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53271617%2frunning-shell-and-python-scripts-that-write-to-files-with-launchd%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
0
active
oldest
votes
0
active
oldest
votes
active
oldest
votes
active
oldest
votes
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Some of your past answers have not been well-received, and you're in danger of being blocked from answering.
Please pay close attention to the following guidance:
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53271617%2frunning-shell-and-python-scripts-that-write-to-files-with-launchd%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Try replacing
ProgramArguments
withProgram
– Mark Setchell
Nov 13 '18 at 0:06
Tried that to no avail. Any other ideas?
– Sam Mahle
Nov 13 '18 at 1:16
Did you make your script executable? Start Terminal and run
chmod +x /Users/sammahle/bin/python_file
– Mark Setchell
Nov 13 '18 at 7:15
Yes, do I have to edit the permission of the file I am writing to?
– Sam Mahle
Nov 13 '18 at 21:00
Three things... 1) Try writing to a file with an absolute path so you are sure where you are writing, e.g.
/tmp/file.txt
2) Open up the permissions on that file withchmod 777 /tmp/file.txt
3) Try running the script directly from the Terminal/Users/sammahle/bin/python_file
and make sure it works like that.– Mark Setchell
Nov 13 '18 at 21:16