Я использую crontab для запуска сценария обслуживания для моего сервера minecraft. В большинстве случаев он работает нормально, если только crontab не пытается использовать скрипт перезапуска. Если я запускаю скрипт перезапуска вручную, никаких проблем не возникает. Поскольку я полагаю, что это связано с путевыми именами, я пытаюсь убедиться, что он всегда выполняет любую команду minecraft ИЗ директории minecraft. Поэтому я инкапсулирую команду в pushd / popd:
os.system("pushd /directory/path/here")
os.system("command to sent to minecraft")
os.system("popd")
Ниже приведен интерактивный сеанс, который выводит Minecraft из уравнения. Простой тест "ls". Как видите, он вообще не запускает команду os.system из каталога pushd, а вместо этого из / etc /, которая является каталогом, в котором я запускал python, чтобы проиллюстрировать свою точку зрения. Очевидно, что pushd не работает через python Вот и мне интересно, как еще я могу этого добиться. Спасибо!
>>> def test():
... import os
... os.system("pushd /home/[path_goes_here]/minecraft")
... os.system("ls")
... os.system("popd")
...
>>> test()
~/minecraft /etc
DIR_COLORS cron.weekly gcrypt inputrc localtime mime.types ntp ppp rc3.d sasldb2 smrsh vsftpd.ftpusers
DIR_COLORS.xterm crontab gpm-root.conf iproute2 login.defs mke2fs.conf ntp.conf printcap rc4.d screenrc snmp vsftpd.tpsave
X11 csh.cshrc group issue logrotate.conf modprobe.d odbc.ini profile rc5.d scsi_id.config squirrelmail vz
adjtime csh.login group- issue.net logrotate.d motd odbcinst.ini profile.d rc6.d securetty ssh warnquota.conf
aliases cyrus.conf host.conf java lvm mtab openldap protocols redhat-release security stunnel webalizer.conf
alsa dbus-1 hosts jvm lynx-site.cfg multipath.conf opt quotagrpadmins resolv.conf selinux sudoers wgetrc
alternatives default hosts.allow jvm-commmon lynx.cfg my.cnf pam.d quotatab rndc.key sensors.conf sysconfig xinetd.conf
bashrc depmod.d hosts.deny jwhois.conf mail named.caching-nameserver.conf passwd rc rpc services sysctl.conf xinetd.d
blkid dev.d httpd krb5.conf mail.rc named.conf passwd- rc.d rpm sestatus.conf termcap yum
cron.d environment imapd.conf ld.so.cache mailcap named.rfc1912.zones pear.conf rc.local rsyslog.conf setuptool.d udev yum.conf
cron.daily exports imapd.conf.tpsave ld.so.conf mailman netplug php.d rc.sysinit rwtab shadow updatedb.conf yum.repos.d
cron.deny filesystems init.d ld.so.conf.d makedev.d netplug.d php.ini rc0.d rwtab.d shadow- vimrc
cron.hourly fonts initlog.conf libaudit.conf man.config nscd.conf pki rc1.d samba shells virc
cron.monthly fstab inittab libuser.conf maven nsswitch.conf postfix rc2.d sasl2 skel vsftpd
sh: line 0: popd: directory stack empty
===
(Сервер CentOS с python 2.4)