宝塔面板Mysql自动重启

最近宝塔面板的Mysql服务有时会出现突然自动停止

看日志也没发现为啥出现的,而且出现这个问题的时间很随机

通过在一个定时脚本任务,每隔10分钟检查一次Mysql服务运行没有,没有运行就启动。

宝塔里面点计划任务,添加一个Shell脚本 执行周期选择每10分钟 名字随便取

脚本如下

pgrep -x mysqld &> /dev/null
if [ $? -ne 0 ];then
        bash /www/server/panel/script/rememory.sh   
        /etc/init.d/mysqld start      
fi

脚本自动执行后当发现mysql服务停止时,将自动启动mysql。这样就解决了这个问题

PPT每页添加进度条

最近制作一个培训用的PPT,因为图片内容多整体页数很长,就想在PPT中每页下方增加一个像视频进度条一样的,帮助观看者了解播放的进度。

效果见图下方黄色进度条

找了一下网上方法,发现用宏是最简单的

首先在制作好的PPT中按Alt+F11打开宏编写窗口

右键-插入-模块

复制代码-根据注释可修改进度条颜色、宽度、位置

修改完成后点击箭头运行或者F5 返回看PPT中以成果添加


Sub ProgressBar()

    Dim mySlides As Slides
    Dim pageBar As ShapeRange
    Dim pageSHower As Shape
    Dim pageWidth, pageHeight, pageStep
    Dim MyArray() As Variant  '增加一个数组以便统计隐藏的幻灯片
    Dim i, j, k
    j = 0
    k = 0

   Set mySlides = Application.ActivePresentation.Slides

   pageWidth = Application.ActivePresentation.SlideMaster.Width
    pageHeight = Application.ActivePresentation.SlideMaster.Height
    ' pageStep = pageWidth / mySlides.Count

   ReDim MyArray(mySlides.Count, 0)
    
    For i = 1 To mySlides.Count '统计隐藏的幻灯片数
       If mySlides.Item(i).SlideShowTransition.Hidden = True Then
           j = j + 1
           MyArray(i, 0) = 1
       Else
           MyArray(i, 0) = 0
       End If
   Next

    '除去首页和隐藏的幻灯片后计算进度条长度增量
    If mySlides.Count - 1 - j > 0 Then
       pageStep = pageWidth / (mySlides.Count - 1 - j)
    Else
       pageStep = 0
    End If

   On Error Resume Next

    For i = 1 To mySlides.Count    ' 改为从1开始
        k = k + MyArray(i, 0)      ' 计算当前隐藏的幻灯片数
       Set pageBar = mySlides.Item(i).Shapes.Range(Array())
       Set pageBar = _
          mySlides.Item(i).Shapes.Range(Array("RectanglePageNum"))

       If IsNull(pageBar) Or pageBar.Count = 0 Then GoTo newBar
       Set pageSHower = pageBar.Item(1)
       GoTo nextPage

newBar:
       Set pageSHower = mySlides.Item(i).Shapes.AddShape( _
                          msoShapeRectangle, 0, _
                          pageHeight - 3, i * pageStep, 3)
       pageSHower.Name = "RectanglePageNum"

nextPage:
       pageSHower.Fill.ForeColor.RGB = RGB(246, 202, 5) 'RGB三个数值控制颜色,可用Powerpoint里的取色器来看,选中想要的颜色后将对应数值填入
       pageSHower.Line.Visible = msoFalse
        ' pageSHower.Width = i * pageStep
        ' 计算进度条长度时除去首页和隐藏的幻灯片
        pageSHower.Width = (i - 1 - k) * pageStep
       pageSHower.Top = pageHeight - 3 '减去的数值越多则越靠上,根据实际情况调节,每改一次要重新运行F5一下看效果
       pageSHower.Left = 0
       pageSHower.Height = 3 '这个值控制进度条的高度(即厚度)
        ' 删除首页和隐藏的幻灯片的进度条
        If i = 1 Or MyArray(i, 0) = 1 Then pageSHower.Delete
    Next
End Sub

一句命令加速网页视频播放速度

遇见网络课程需要看完一个视频才能进入下一个,还不能快进怎么办。

这个时候只需要判断页面是Html5的播放器,当前大部分网站都是使用的Html5的播放器。

直接通过设置视频的倍速加快播放,方法如下:

浏览器F12打开调试,在Console中输入

document.querySelector('video').playbackRate = 5;


其中数字5替换你想要的加速的倍速

回车确认

当然还可以使用油候插件,安装一个Html5全能插件,所有页面的加速减速全屏小窗口悬浮都可以

推荐使用
https://github.com/xxxily/h5player

安利一个神奇的网站

今天发现要给神奇的网站,里面有各种教男性各种生活技巧。

会教你诸如如何吹口哨、刀具使用、讲笑话、打理花园、修电路、伐木、生火、处理鱼、切一只火鸡、约会、推车、翻跟斗、磨刀等等。

翻看了一篇交如何选择合适发型的文章,发现写的很好,都是具体可操作性的方法,加上精美的配图。

值得收藏,大家快去看看

https://www.artofmanliness.com/

解决挂课视频鼠标离开网页视频暂停问题

今天打开一个需要挂学时的培训,发现今年的页面进行了升级,如果鼠标点击了网页以外区域或者页面切换到了其他页面,课程视频页面就会暂停。?

这个真是有点坑,要是一个个等着看完,半周时间就没有了 。

先看了下,启用画中画功能,发现开启了画中画点击其他页面也会暂停。

再试了下网上说的,视频播放后点击右键,再WIN+D最小化窗口,发现还是不行。

继续看了下页面通过js检查焦点,可以通过修改js去除这个限制,

不过网上看到一个更方便的方法,通过每秒将视频状态调整为播放

上解决办法

视频播放器为HTML5:

F12打开开发工具-在控制台(console)中输入

setInterval(function () {
    var current_video = document.getElementsByTagName('video')[0]
    current_video.play()
}, 1000)

回车执行即可

console中执行

视频播放器为Flash:

通过修改失去焦点函数

F12打开开发工具-在控制台(console)中输入

  if (!-[1,] && !window.XMLHttpRequest || navigator.userAgent.indexOf("MSIE 8.0") > 0) {
        document.onfocusout = function () {
            return true;
        }
    } else {
        window.onblur = function () {
            return true;
        }
    }

执行后,就可以将页面放到后台,愉快的干其他的了? 。

pip更新失败的解决

通过pip更新pip时提示权限不足,重新使用系统管理员权限执行后报错。

PS C:\WINDOWS\system32> pip install -U pip
Script file 'd:\anaconda3\Scripts\pip-script.py' is not present.

这个时候是pip因为更新一半文件受损导致的

解决办法通过easy_install重新安装pip

easy_install pip

等待重新安装完成pip后就可以重新执行pip的更新

PS C:\WINDOWS\system32>  easy_install pip
WARNING: The easy_install command is deprecated and will be removed in a future version.
Searching for pip
Reading https://pypi.org/simple/pip/
Downloading https://files.pythonhosted.org/packages/fe/3b/0fc5e63eb277d5a50a95ce5c896f742ef243be27382303a4a44dd0197e29/pip-20.2b1-py2.py3-none-any.whl#sha256=b4e230e2b8ece18c5a19b818f3c20a8d4eeac8172962779fd9898d7c4ceb1636
Best match: pip 20.2b1
Processing pip-20.2b1-py2.py3-none-any.whl
Installing pip-20.2b1-py2.py3-none-any.whl to d:\anaconda3\lib\site-packages
Adding pip 20.2b1 to easy-install.pth file
Installing pip-script.py script to d:\anaconda3\Scripts
Installing pip.exe script to d:\anaconda3\Scripts
Installing pip3-script.py script to d:\anaconda3\Scripts
Installing pip3.exe script to d:\anaconda3\Scripts
Installing pip3.8-script.py script to d:\anaconda3\Scripts
Installing pip3.8.exe script to d:\anaconda3\Scripts

Installed d:\anaconda3\lib\site-packages\pip-20.2b1-py3.7.egg
Processing dependencies for pip
Finished processing dependencies for pip

解决WIN10蓝牙鼠标无法自动连接

前面时间开始蓝牙鼠标每次电脑重启和休眠后都无法自动连接,反反复复试了删除、添加还是不能解决。每次开机只能手动点开蓝牙连接,新蓝牙连接后才会连接上。

鼠标用的是雷柏的MT750,一款仿着罗技做的鼠标,用来办公很不错,让我以为是鼠标有问题已经准备重新买一个。

在网上查询试了几种办法后,发现这是WIN10 1803 版本更新后的一个问题,如果蓝牙设备的芯片不属于微软认证的,就不会自动连接。

这里使用一个曲线的方法,添加BLEConsole 到服务自动启动。

这是个能够控制蓝牙 4.0 BLE(低功耗)设备的控制台,运行后:只要它在后台,鼠标就能自动连接上。

首先下载BLEConsole 

https://github.com/sensboston/BLEConsole/releases

或者走我下载放在云盘的

下载BELConsole

下载后将BELConsole放到Windows目录下

C:\Windows

然后下载instsrv.exe 和 srvany.exe 

下载instsrv和srvany

下载后将程序放到

C:\WINDOWS\SysWOW64

用管理员权限运行

C:\WINDOWS\SysWOW64\instsrv.exe BLEConsole C:\WINDOWS\SysWOW64\srvany.exe

然后打开注册表(Win+R 打开「运行」,输入regedit),进入 HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\BLEConsole,右击 BLEConsole ,新建项,命名为 Parameters。在 Parameters 下新建几个「字符串值」:

  • 名称:Application,内容:C:\Windows\BLEConsole.exe
  • 名称:AppDirectory,内容:C:\Windows
  • 名称:AppParameters,内容留空

也可以下载注册表文件导入

https://www.lanzous.com/iawz0zc

最后在服务中将几个服务改成自动启动

设置完毕后运行 services.msc,找到 BLEConsole,双击将启动类型设置为「自动」。

然后再找到「蓝牙支持服务」和「蓝牙音频网关服务」,均设置为「自动」。

Screen后台执行,防止VPS SSH链接中断

最近在通过SSH链接VPS执行长时间编译工作时,SSH断开后编译停止导致失败,该如何解决这个问题。

发现通过使用Screen虚拟终端管理器,建立新终端,这样进程就可以保留在后台运行,哪怕SSH断开也不会影响。

安装Screen

sudo apt-get install screen

使用Screen

使用Screen比较简单,只需要掌握建立、查询、切换不同终端命令即可。

首先建立新的终端

screen -S newterminal

-S参数后接新终端的名称,替换newterminal为你想要叫的终端名,例如lede

建立后会自动切换到新终端,此时执行命令就在新终端,并且退出SSH连接后,终端依旧保留后台执行。

列出已创建的终端

再第二次SSH链接VPS后,默认进入系统新建的终端,此时执行命令列出后台执行了终端

screen -ls
列出终端

在图中可以看到我有个两个后台执行的终端和终端开始的时间

切换到运行中终端

接下来切换到后台运行中的终端

screen -r newterminal

newterminal为终端名称,可在列表中查看或者直接输入定义终端时取的名称

终端名称相同怎么办?

可以前面图片看到,我的两个终端都叫做lede,那么这里切换应该如何进入某一个喃。

这里切换时我们需要加上可选参数[pid]

screen -r pid.newterminal

pid的值可以在screen -ls中查看

例如现在我切换到第二个名为lede的终端

通过pid选择同名终端
screen -r 106305.lede

切换后可以看到我的这个进程是昨晚编译openwrt的lede

整个执行时间超过4小时,进入终端后可以看到已经编译完成

切换入后台终端

退出Screen终端

退出Screen中建立的终端,回到SSH默认终端

执行

exit
退出Screen终端

显示screen is terminating 退出screen的终端连接,将会回到SSH默认的终端

其他参数

-A  将所有的视窗都调整为目前终端机的大小。
-d <作业名称>  将指定的screen作业关闭。
-h <行数>  指定视窗的缓冲区行数。
-m  即使目前已在作业中的screen作业,仍强制建立新的screen作业。
-r <作业名称>  恢复离线的screen作业。
-R  先试图恢复离线的作业。若找不到离线的作业,即建立新的screen作业。
-s  指定建立新视窗时,所要执行的shell。
-S <作业名称>  指定screen作业的名称。
-v  显示版本信息。
-x  恢复之前离线的screen作业。
-ls或--list  显示目前所有的screen作业。
-wipe  检查目前所有的screen作业,并删除已经无法使用的screen作业。

其余详情可以到官网查看

GNU’s Screen 官方站点:http://www.gnu.org/software/screen/

ubuntu 查看CPU占用情况

安装使用htop

首先通过apt-get安装一个htop

sudo apt-get install htop

输入root账户密码

安装htop

如果apt-get安装失败,可以下载源码编译安装

https://sourceforge.net/projects/htop/

安装后使用

htop

运行查看CPU占用情况

htop查看进程

通过上下键选择进程,F9可以杀掉进程,F10退出Htop

展现出来的各个项目

  • PID:进行的标识号
  • USER:运行此进程的用户
  • PRI:进程的优先级
  • NI:进程的优先级别值,默认的为0,可以进行调整
  • VIRT:进程占用的虚拟内存值
  • RES:进程占用的物理内存值
  • SHR:进程占用的共享内存值
  • S:进程的运行状况,R表示正在运行、S表示休眠,等待唤醒、Z表示僵死状态
  • %CPU:该进程占用的CPU使用率
  • %MEM:该进程占用的物理内存和总内存的百分比
  • TIME+:该进程启动后占用的总的CPU时间
  • COMMAND:进程启动的启动命令名称

偷懒法

如果只是想查看下进程不想安装新的软件

可以运行系统自带的top,在终端中输入

top
top

让树莓派推送IP到微信

树莓派没连接屏幕情况下,连接网络怎样快速获得IP地址。

查了下网上现在有小屏幕显示、DDNS绑定还有包括让树莓派播放音频把IP地址读出来。

这里准备用Python写一个小程序

之前我一直在用 Server 酱的推送服务,推送消息到微信中,这里想到可以让树莓派每次开机联网后将IP通过 Server 酱推送到微信。

这里需要用到:

  • 1.树莓派(我手里是树莓派4,多少没关系能联网就行)
  • 2.Server酱账号一个
  • 3.Python程序一个

操作步骤

首先到Server酱注册账号,并绑定要接收消息的微信

http://sc.ftqq.com/

可使用GitHub一键登入 ,登录后首先绑定需要接收消息的微信

点击【微信推送】,扫描二维码关注公众号绑定接收微信号

Server酱首页选择微信推送

然后选择发送消息,获取SCKEY

Server酱参数说明

Server酱支持Get或者Post推送消息,这里我们选择Post可以定义标题和内容

接下来准备Python代码(自己瞎写的 能用就行?)

#!/usr/bin/env python
# coding=utf-8

#通过Sever酱推送树莓派IP到微信
#By 沙糖桔

import os
import sys
import time
import socket
import subprocess
import requests
import urllib3
import ssl



def getLocalIP():
    ip = None
    try:
        s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
        s.connect(('114.114.114.114', 0))
        ip = s.getsockname()[0]
    except:
        name = socket.gethostname()
        ip = socket.gethostbyname(name)
    if ip.startswith("127."):
        cmd = '''/sbin/ifconfig | grep "inet " | cut -d: -f2 | awk '{print $1}' | grep -v "^127."'''
        a = subprocess.Popen(
            cmd,
            shell=True,
            stdout=subprocess.PIPE,
            stderr=subprocess.PIPE)
        a.wait()
        out = a.communicate()
        ip = out[0].strip().split("\n")  # 所有的列表
        if len(ip) == 1 and ip[0] == "" or len(ip) == 0:
            return False
        ip = "over".join(ip)
    return ip


def pushtoWx(text,desp):
    s = requests.Session()
    ssl._create_default_https_context = ssl._create_unverified_context  # 关闭SSL证书验证
    headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/44.0.2403.157 Safari/537.36','Content-type': 'application/x-www-form-urlencoded'}
    push_url = r'https://sc.ftqq.com/[替换为你的SCKEY].send'  # Server 推送地址
    values = {'text': text, 'desp': desp}
    rp = s.post(push_url, data=values, headers=headers,verify=False)
    html = rp.text
    print(html)


def push_ip(ip):
    pushtoWx('树莓派地址:'+ip,'')


if __name__ == '__main__':
    count = 0
    time.sleep(10)#开机连接等待十秒钟后执行
    while True:
        ip = getLocalIP()
        print(ip)
        if ip == False:
            print("获取ip错误")
        else:
            count += 1
            push_ip(ip)
        if count == 2:
            break
        time.sleep(3)

然后将脚本加入开机执行

sudo vim /etc/rc.local

在 exit 0 之前添加一行:

sudo /usr/bin/python /home/pi/push_ip_wx.py &

保存后重启树莓派

启动后联网10秒推送消息到微信

Server酱推送的消息
收到的IP地址

拿到IP后就可以SSH、VNC链接树莓派开始玩耍。