0%

前一阵子碰到了个玄学问题,就是crontab不执行shell脚本。
在命令行下可以正常执行,然而crontab下不行,incron更不行。
折腾了一天,总算找到了解决方法

解决方法

脚本务必放在root文件夹下

个人的经验把,放在root文件夹下,也就是用户目录下,crontab或则incron才能方便执行

设置脚本的环境变量,在脚本前插入PATH

这个比较重要,在命令行下执行:

1
echo $PATH

将返回的环境变量复制出来,插入到前面,如下

1
PATH=/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/home/x/bin

给脚本执行权限

1
chmod a+x shell.sh
阅读全文 »

我最近折腾Nginx反向代理呢,是基于Oneinstack安装包DIY的。但是遇见了一些问题。好在总算成功了
步骤如下:

必看

需要有好的linux基础,未用Oneinstack安装过nginx,如果安装过,那你就需要解压nginx文件夹,复制Oneinstack的编译文件,挺麻烦的。
至于为什么安装过,就不能重新安装,请看后面。

安装基本组件

1
2
yum -y install wget screen curl python #for CentOS/Redhat
# apt-get -y install wget screen curl python #for Debian/Ubuntu

下载和解压Oneinstack安装包

1
2
wget http://mirrors.linuxeye.com/oneinstack-full.tar.gz #包含源码,国内外均可下载
tar xzf oneinstack-full.tar.gz
阅读全文 »

我有一些网站,只想给自己和自己的朋友看,所以需要加密,加上访问认证。只有知道用户名和密码的人才能访问自己的网站。

准备工作

能看到这篇文章的,大都安装过Nginx了吧。如果没有安装过,那你就需要安装Nginx了。

生成加密过的密码

使用openssl生成加密过的密码:

1
openssl passwd

接下来会提示输入密码,连续输入两次后就能得到加密后的密码了,如:

1
D89diuh3du23d

此时把加密的密码复制下来,供后面使用。

阅读全文 »

我使用了h5ai,需要用到ImageMagick,所以需要在系统中安装ImageMagick模块

安装ImageMagick

Centos系统运行下面的命令安装ImageMagick:

1
yum install ImageMagick ImageMagick-devel pcre-devel

然后测试一下是否能够正常运行

1
convert

如果正常的输出了帮助信息,那就安装成功了。

参考文章

ImageMagick官网

前一阵子我用yum安装了ffmpeg,但无法正常运行。耐心查看了一下错误输出信息,原来是因为缺少libfribidi.so.0组件导致的。

安装ffmpeg

Centos系统运行下面的命令安装ffmpeg:

1
2
3
4
5
sudo yum install epel-release -y
sudo yum update -y
sudo rpm --import http://li.nux.ro/download/nux/RPM-GPG-KEY-nux.ro
sudo rpm -Uvh http://li.nux.ro/download/nux/dextop/el7/x86_64/nux-dextop-release-0-5.el7.nux.noarch.rpm
sudo yum install ffmpeg ffmpeg-devel -y

然后测试一下是否能够正常运行

1
ffmpeg -h

如果正常的输出了帮助信息,那就安装成功了,如果提示缺少libfribidi.so.0组件。那就需要安装一下。

安装libfribidi.so.0依赖

直接执行下面的命令就可以了

1
yum install fribidi

参考文章

fribidi-0.19.4-6.el7.i686.rpm

前面我已经写了Git的Webhooks使用文章,但如果我们使用Dropbox或者谷歌云盘进行文件同步,文件发生变动时怎么自动执行脚本呢?
可以选择使用Incron进行文件监控。

什么是Incron

先放几个官方的说明:

This program is an “inotify cron” system. It consists of a daemon and a table manipulator. You can use it a similar way as the regular cron. The difference is that the inotify cron handles filesystem events rather than time periods.
这个程序是一个“inotify cron”系统。它由一个守护进程和一个表操作器组成。你可以像使用普通的cron一样使用它。区别在于inotify cron处理文件系统事件而不是时间段。

简单概括一下(译自http://inotify.aiken.cz):
incron提供了一个简单的方法来解决许多和许多不同的情况。每当某些事情取决于文件系统事件时,它就是incron的工作。
在这里你可以看到几个例子,incron是一个很好的解决方案:

  • 通知程序(例如服务器守护程序)有关配置的更改
  • 保护关键文件的变化(最终恢复)
  • 文件使用情况监控,统计
  • 自动碰撞清理
  • 自动更新备份或版本控制
  • 新邮件通知(maildir)
  • 服务器上传通知
  • 安装管理(外包装系统)

Incron 安装

阅读全文 »

前一阵子我其实是想用Google drive + incron的方式自动提交博客,然而碰到了一些问题,Goole drive可以同步文件夹,但不能自动同步文件夹,并且没有git这样优秀的版本控制。
而我又不想自己手动上传文章以及拉取文章,拉取之后还得手工hexo g,太麻烦了。
写定时拉取,自动更新的确可以,但是这样太没逼格了。
于是我就查资料,发现了git有webhooks。

什么是Webhooks

先放几个官方的说明:

简单概括一下(译自Github Webhooks):

  • Webhooks允许我们建立关于项目的在GitHub上的事件集成.当事件触发的时候,会通过HTTP POST的方式,向我们的服务器发送请求.我们可以用这个服务器去更新外部跟踪,触发CI build,更新备份镜像,部署到生产服务器.
  • 每个Webhook都可以安装在一个项目或者组织上,安装完毕之后,就可以随着订阅的时间进行触发.
  • 每个项目的每个事件最多可以安装20个Webhook.

Webhooks 脚本

Webhook脚本实现可以用PHP、NodeJS等,本文仅介绍PHP脚本,笔者也用的这个脚本

阅读全文 »

我有3个谷歌帐号,其中2个拥有无限空间的Goole drive。
最近我需要备份网站数据,需要一天备份一次,国内的网盘我不放心,所以想到了谷歌云端硬盘。
在Centos7下使用谷歌云端硬盘非常的容易,一个老外已经写好了Google Drive的CLI工具-Gdrive
如果无法访问,可以上我自己的私有仓库-Gdrive

安装Gdrive

进入ssh,运行下面的命令即可

1
2
wget -O /usr/bin/gdrive "https://docs.google.com/uc?id=0B3X9GlR6EmbnQ0FtZmJJUXEyRTA&export=download"
chmod +x /usr/bin/gdrive

授权

运行下面的命令给Gdrive进行授权,输入命令后会出现一串网址并询问验证码,将地址粘贴到浏览器并登陆账号,会返回一串代码,粘贴,回车后会返回你的账户信息。

1
gdrive about
阅读全文 »

现在是北京时间2018年3月14日 19:48:21,我在北京,天气良好。

2018年3月12日,我拖着行李,坐飞机第三次来到了北京,急着去找房租,但是没想到北京房租市场的水太深了,我没有及时的租到房子。晚上请教了同事,了解了房租应该租在哪一片地区,怎么样才能避免“黑中介”等问题,我非常感谢他们在这时候提供的帮助!

2018年3月13日,我在沙河租到了18平米的整租房,一室一卫,没有人打扰,房子很好,阳光能通过窗户照进来。然后搬行李到房间,简易的收拾了一下,很累,便睡了。

2018年3月14日,也就是今天,我处理了一下房屋的一些细节问题,准备明天开始正式实习,我给老板和同时说的3月中旬来,我说话要算数。

2035年的我,你好!

我不知道未来的我,生活是不是变得更好了?是不是一如既往的热爱生活,热爱自己的工作?

阅读全文 »

今天我去应聘,面试我的大佬考了我一道题,但是我没有做出来,太丢人了。
他的要求是C语言写出一个去除空格的函数。
应该自我反省并做笔记。
查了一下资料,多次实验,给出的程序如下。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include<stdlib.h>
#include<stdio.h>
#include<string.h>

void trim(char *strIn, char *strOut) {
int i, j ;
i = 0;
j = strlen(strIn) - 1;
while (strIn[i] == ' ')
++i;
while (strIn[j] == ' ')
--j;
strncpy(strOut, strIn + i , j - i + 1);
strOut[j - i + 1] = '\0';
}

void main() {
char *strIn = " ak kl p ";
char strOut[100];
trim(strIn, strOut);
printf("*%s*\n", strOut);
system("pause");
}

还可以用下面的函数去除空格

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
void trim(char *strIn, char *strOut) {
char *start, *end, *temp;//定义去除空格后字符串的头尾指针和遍历指针
temp = strIn;
while (*temp == ' ') {
++temp;
}
start = temp; //求得头指针
temp = strIn + strlen(strIn) - 1; //得到原字符串最后一个字符的指针(不是'\0')
printf("%c\n", *temp);
while (*temp == ' ') {
--temp;
}
end = temp; //求得尾指针
for (strIn = start; strIn <= end; ) {
*strOut++ = *strIn++;
}
*strOut = '\0';
}

程序代码转载自:daxueit.com

基础学的不扎实,期望以后能够努力学习。

浏览笔记

https://stackoverflow.com/questions/1726302/removing-spaces-from-a-string-in-c
https://www.geeksforgeeks.org/remove-spaces-from-a-given-string/

后记

我文笔并不是很好,如果用WordPress博客程序写我估计会逻辑混乱,排版糟糕。
哪位巨巨指点一下让我写的更好,感激不尽。