crontab定时运行图形程序

李魔佛 发表了文章 • 0 个评论 • 204 次浏览 • 2019-08-26 15:56 • 来自相关话题

默认情况不会显示任何图形的界面,需要在程序前添加 
export DISPLAY=:0;* * * * * export DISPLAY=:0; gedit 
附一个linux下桌面提醒GUI程序,定时提醒你休息哈:
 
import pyautogui as pag
import datetime

def neck_rest():
f = open('neck_record.txt', 'a')
ret = pag.prompt("Rest! Protect your neck !")
if ret == 'rest':
f.write(datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S"))
f.write('\t')
f.write('Rest')
f.write('\n')
else:
f.write(datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S"))
f.write('\t')
f.write('Failed to rest')
f.write('\n')
f.close()

neck_rest()
程序保存为task.py
然后设定crontab任务:

* * * * * export DISPLAY=:0; python task.py 
即可

  查看全部
默认情况不会显示任何图形的界面,需要在程序前添加 
export DISPLAY=:0;
* * * * * export DISPLAY=:0; gedit
 
附一个linux下桌面提醒GUI程序,定时提醒你休息哈:
 
import pyautogui as pag
import datetime

def neck_rest():
f = open('neck_record.txt', 'a')
ret = pag.prompt("Rest! Protect your neck !")
if ret == 'rest':
f.write(datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S"))
f.write('\t')
f.write('Rest')
f.write('\n')
else:
f.write(datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S"))
f.write('\t')
f.write('Failed to rest')
f.write('\n')
f.close()

neck_rest()

程序保存为task.py
然后设定crontab任务:

* * * * * export DISPLAY=:0; python task.py 
即可

 

alias别名 等号后面不用

李魔佛 发表了文章 • 0 个评论 • 216 次浏览 • 2019-08-12 14:17 • 来自相关话题

alias sync="git commit -m 'update' -a && git push origin master"
alias fetch="git fetch origin"
alias dj="python manage.py runserver 0.0.0.0"
alias py2="python2"
alias py3="python3"
alias ggg="cd ~/git" 查看全部
alias sync="git commit -m 'update' -a && git push origin master"
alias fetch="git fetch origin"
alias dj="python manage.py runserver 0.0.0.0"
alias py2="python2"
alias py3="python3"
alias ggg="cd ~/git"

python执行shell命令时报错: -/bin/sh: 命令:not found的解决办法

李魔佛 发表了文章 • 0 个评论 • 528 次浏览 • 2019-07-29 15:13 • 来自相关话题

file='test.txt'
cmd = f'rsync -av {file} root@10.18.6.46:/home/cjw/'

p = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE,executable="/bin/bash")
output, error = p.communicate()
if p.returncode != 0:
print("Error while running - %s" % cmd)
print(error)
print(output) 
用sublime3 运行的时候一直报错。
后来发现,这个是sublime3的运行环境问题, 直接用shell执行 python main.py 执行上面的代码,命令可以正常运行。
/bin/sh: 1: rsync: not found 查看全部
     file='test.txt'
cmd = f'rsync -av {file} root@10.18.6.46:/home/cjw/'

p = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE,executable="/bin/bash")
output, error = p.communicate()
if p.returncode != 0:
print("Error while running - %s" % cmd)
print(error)
print(output)
 
用sublime3 运行的时候一直报错。
后来发现,这个是sublime3的运行环境问题, 直接用shell执行 python main.py 执行上面的代码,命令可以正常运行。
/bin/sh: 1: rsync: not found

ubuntu/linux shell根据进程名杀死进程 一句搞定

李魔佛 发表了文章 • 0 个评论 • 427 次浏览 • 2019-04-19 23:15 • 来自相关话题

ps -ef | grep "进程名" | grep -v grep | cut -c 10-16 | xargs kill -9 
比如我要杀死python的进程,就使用
 

ps -ef | grep "python" | grep -v grep | cut -c 10-16 | xargs kill -9
 
来使用。
 
grep -v grep 因为 ps 会把grep python这个进程也打印出来,所以-v 是反转的意思,不匹配的才打印出来,然后cut 是找出10到16位的字符,这里需要大家根据自己的用户名来调整。
一般ps -ef输出是 前面 用户名,然后空格, 接着是进程号。 如果你的用户名很长,可以调整10-16的位置来适应。
 
后面就是把进程号传递给kill作为参数,-9 是强制杀死。
 
  查看全部
ps -ef | grep "进程名" | grep -v grep | cut -c 10-16 | xargs kill -9
 
比如我要杀死python的进程,就使用
 

ps -ef | grep "python" | grep -v grep | cut -c 10-16 | xargs kill -9
 
来使用。
 
grep -v grep 因为 ps 会把grep python这个进程也打印出来,所以-v 是反转的意思,不匹配的才打印出来,然后cut 是找出10到16位的字符,这里需要大家根据自己的用户名来调整。
一般ps -ef输出是 前面 用户名,然后空格, 接着是进程号。 如果你的用户名很长,可以调整10-16的位置来适应。
 
后面就是把进程号传递给kill作为参数,-9 是强制杀死。
 
 

树莓派 vim代码高亮

李魔佛 发表了文章 • 0 个评论 • 381 次浏览 • 2019-04-09 09:38 • 来自相关话题

首先安装vim 
sudo apt-get install-y vim
 
然后默认没有高亮语法的:

在~目录下面新建.vimrc文件可以实现1
 
然后编辑.vimrc文件
 

set nu
syntax on
set tabstop=4
 
然后就可以生效了。
如果还木有生效,记得重启下,或者注销。 查看全部
首先安装vim 
sudo apt-get install-y vim
 
然后默认没有高亮语法的:

在~目录下面新建.vimrc文件可以实现1
 
然后编辑.vimrc文件
 

set nu
syntax on
set tabstop=4
 
然后就可以生效了。
如果还木有生效,记得重启下,或者注销。

centos 7 自带的jdk路径

李魔佛 发表了文章 • 0 个评论 • 581 次浏览 • 2018-11-19 14:46 • 来自相关话题

centos7自带java,但如果显示JAVA_HOME路径的时候,会显示为空,因为环境变量并没有把JAVA_HOME写进去。
需要自己去输入
jdk路径如下:
/etc/alternatives/java_sdk_1.8.0_openjdk
 
然后创建环境变量:
export JAVA_HOME=/etc/alternatives/java_sdk_1.8.0_openjdk
 
这样省去了到官网下载JDK和配置的时间了。
  查看全部
centos7自带java,但如果显示JAVA_HOME路径的时候,会显示为空,因为环境变量并没有把JAVA_HOME写进去。
需要自己去输入
jdk路径如下:
/etc/alternatives/java_sdk_1.8.0_openjdk
 
然后创建环境变量:
export JAVA_HOME=/etc/alternatives/java_sdk_1.8.0_openjdk
 
这样省去了到官网下载JDK和配置的时间了。
 

Python推送到kindle问题。多谢

李魔佛 回复了问题 • 2 人关注 • 2 个回复 • 990 次浏览 • 2018-10-26 11:32 • 来自相关话题

ubuntu samba连接斐讯天天链N1 提示 Host is down.

李魔佛 发表了文章 • 0 个评论 • 2314 次浏览 • 2018-06-02 16:48 • 来自相关话题

配置:
斐讯天天链N1 + 斐讯硬盘H1
ubuntu 和天天链在同一个内网中。
 平时个人在ubuntu下使用的mount命令不管用。 提示 Host is down
如果直接用gui连接,是没问题的(打开文件夹,选择连接服务器,然后服务器地址填 smb://192.168.1.1 ) 然后就可以访问天天链的硬盘。 
但是为什么使用mount命令就不行了呢 ?
 
通过不断更改参数,发现问题出在斐讯samba的版本用的是老旧的vers 1.0. 这时需要你在mount命令中制定版本。
 sudo mount -t cifs -o username=root,password=xxxxx,uid=1000,gid=1000,vers=1.0,_netdev //192.168.1.88/HDisk /home/use/net
通过上述的命令, 就可以把斐讯的硬盘mount到本地,并且有权限可以读写。
记得加上
uid=1000,gid=1000, 不然会没有权限读写,只能一直使用sudo 才能读写哦。
 
 
原创文章
转载请注明出处:http://30daydo.com/article/317
  查看全部
配置:
斐讯天天链N1 + 斐讯硬盘H1
ubuntu 和天天链在同一个内网中。
 平时个人在ubuntu下使用的mount命令不管用。 提示 Host is down
如果直接用gui连接,是没问题的(打开文件夹,选择连接服务器,然后服务器地址填 smb://192.168.1.1 ) 然后就可以访问天天链的硬盘。 
但是为什么使用mount命令就不行了呢 ?
 
通过不断更改参数,发现问题出在斐讯samba的版本用的是老旧的vers 1.0. 这时需要你在mount命令中制定版本。
 
sudo mount -t cifs -o username=root,password=xxxxx,uid=1000,gid=1000,vers=1.0,_netdev //192.168.1.88/HDisk /home/use/net

通过上述的命令, 就可以把斐讯的硬盘mount到本地,并且有权限可以读写。
记得加上
uid=1000,gid=1000, 不然会没有权限读写,只能一直使用sudo 才能读写哦。
 
 
原创文章
转载请注明出处:http://30daydo.com/article/317
 

linux的crontab中每隔一段时间是以什么为准

李魔佛 发表了文章 • 0 个评论 • 1926 次浏览 • 2018-05-07 19:37 • 来自相关话题

*/10 * * * * date >> /home/user/test.log 
比如上面的语句, 每个10分钟运行一次,这个大家都知道(不知道的可以google),可是在运行中,这个10分钟是什么开始的呢? 
从上面运行的test.log记录的文件来看,这个10分钟是以当前的时钟,从0点开始算起的10分钟,比如你刚刚设定的crontab的时间是1点15分,那么脚本运行的时间是1点20分,因为这个时间间隔是0,10,20,30,40,50,0分这种规律执行的,并不是在你配置后crontab的时间(1点15分+10分钟,即1点25分)。所以如果你设定的是
*/40 * * * * date >> /home/user/test.log
那么执行的结果是0点40分,1点20分,2点,2点40分,3点20分。。。。这样的执行顺序。
有点奇葩。 查看全部
*/10 * * * * date >> /home/user/test.log
 
比如上面的语句, 每个10分钟运行一次,这个大家都知道(不知道的可以google),可是在运行中,这个10分钟是什么开始的呢? 
从上面运行的test.log记录的文件来看,这个10分钟是以当前的时钟,从0点开始算起的10分钟,比如你刚刚设定的crontab的时间是1点15分,那么脚本运行的时间是1点20分,因为这个时间间隔是0,10,20,30,40,50,0分这种规律执行的,并不是在你配置后crontab的时间(1点15分+10分钟,即1点25分)。所以如果你设定的是
*/40 * * * * date >> /home/user/test.log

那么执行的结果是0点40分,1点20分,2点,2点40分,3点20分。。。。这样的执行顺序。
有点奇葩。

ubuntu输入密码后一直无法进入系统,继续返回在登录界面

李魔佛 发表了文章 • 0 个评论 • 1640 次浏览 • 2018-04-29 15:31 • 来自相关话题

之前一直好好的,突然一直无法登录,密码是正确的。然后按照网上的大部分教程那样,通过Ctrl+Alt +F6 进入命令行模式,可以正常登录。
然后也尝试修改.Xauthority的权限,给个777. 重启后还是不行,然后尝试把这个文件直接删除,还是无法登录图形界面。 好多人也说是显卡驱动问题,可是我根本没有修改任何的图形的设置,或者安装过显卡的驱动。
然后在GRUB启动菜单中,进入其他的内核版本。
居然用一个旧的内核版本,居然可以进入系统的图形界面。linux-4.2.0.38,而最新的4.2.0.39会一直出现问题。
所以问题就解决了。
 
但是不能每次开机都要手动选择一次grub的菜单,然后进入到ubuntu advanced菜单中选择里面的低内核版本。
 
然后按照网上的套路,修改/boot/grub/grub.cfg, 可是这文件是系统文件,一直是只读状态,无法修改。 尝试进入recovery模式的root用户下,也改不了。
 
所以想到可以把内核4.2.0.39给删除掉。
 
apt remove linux-4.2.0.39-XXXXX  (后面的一串字符忘记了,你可以打开grub.cfg里面找到的)
 
结果,在卸载内核的同时,居然还给我升级到了linux-4.2.0.40内核版本,实在无语。。 而尝试通过这个最新的linux-4.2.0.40内核版本进入系统,可是老问题依然存在,无法登录系统。
 
于是只好再手工删除这个linux-4.2.0.40内核。
 
最后,所有内核自身一个linux-4.2.0.38. 然后update-grub, 默认就会进入linux-4.2.0.38的内核的ubuntu,然后就可以登录ubuntu的图形界面的了。
 
  查看全部
之前一直好好的,突然一直无法登录,密码是正确的。然后按照网上的大部分教程那样,通过Ctrl+Alt +F6 进入命令行模式,可以正常登录。
然后也尝试修改.Xauthority的权限,给个777. 重启后还是不行,然后尝试把这个文件直接删除,还是无法登录图形界面。 好多人也说是显卡驱动问题,可是我根本没有修改任何的图形的设置,或者安装过显卡的驱动。
然后在GRUB启动菜单中,进入其他的内核版本。
居然用一个旧的内核版本,居然可以进入系统的图形界面。linux-4.2.0.38,而最新的4.2.0.39会一直出现问题。
所以问题就解决了。
 
但是不能每次开机都要手动选择一次grub的菜单,然后进入到ubuntu advanced菜单中选择里面的低内核版本。
 
然后按照网上的套路,修改/boot/grub/grub.cfg, 可是这文件是系统文件,一直是只读状态,无法修改。 尝试进入recovery模式的root用户下,也改不了。
 
所以想到可以把内核4.2.0.39给删除掉。
 
apt remove linux-4.2.0.39-XXXXX  (后面的一串字符忘记了,你可以打开grub.cfg里面找到的)
 
结果,在卸载内核的同时,居然还给我升级到了linux-4.2.0.40内核版本,实在无语。。 而尝试通过这个最新的linux-4.2.0.40内核版本进入系统,可是老问题依然存在,无法登录系统。
 
于是只好再手工删除这个linux-4.2.0.40内核。
 
最后,所有内核自身一个linux-4.2.0.38. 然后update-grub, 默认就会进入linux-4.2.0.38的内核的ubuntu,然后就可以登录ubuntu的图形界面的了。