Termux:Android系统中的类 Linux系统


Termux is an Android terminal emulator and Linux environment app that works directly with no rooting or setup required. A minimal base system is installed automatically – additional packages are available using the APT package manager.

Termux是一个 Android终端模拟器和 Linux环境应用程序,可直接运行而无需生根或安装。 自动安装了最小的基本系统-使用APT软件包管理器可以使用其他软件包。

如何使用 Termux 清华镜像

自动替换

使用如下命令自动替换官方源为 TUNA 镜像源

sed -i 's@^\(deb.*stable main\)$@#\ndeb https://mirrors.tuna.tsinghua.edu.cn/termux/termux-packages-24 stable main@' $PREFIX/etc/apt/sources.list
sed -i 's@^\(deb.*games stable\)$@#\ndeb https://mirrors.tuna.tsinghua.edu.cn/termux/game-packages-24 games stable@' $PREFIX/etc/apt/sources.list.d/game.list
sed -i 's@^\(deb.*science stable\)$@#\ndeb https://mirrors.tuna.tsinghua.edu.cn/termux/science-packages-24 science stable@' $PREFIX/etc/apt/sources.list.d/science.list
apt update && apt upgrade

手动修改

编辑 $PREFIX/etc/apt/sources.list 修改为如下内容

# The termux repository mirror from TUNA:
deb https://mirrors.tuna.tsinghua.edu.cn/termux/termux-packages-24 stable main

编辑 $PREFIX/etc/apt/sources.list.d/science.list 修改为如下内容

# The termux repository mirror from TUNA:
deb https://mirrors.tuna.tsinghua.edu.cn/termux/science-packages-24 science stable

编辑 $PREFIX/etc/apt/sources.list.d/game.list 修改为如下内容

# The termux repository mirror from TUNA:
deb https://mirrors.tuna.tsinghua.edu.cn/termux/game-packages-24 games stable

请使用内置或安装在 Termux 里的文本编辑器,例如 vi / vim / nano 等,不要使用 RE 管理器等其他具有 ROOT 权限的外部 APP 来修改 Termux 的文件

安装 openssh 并设置

下载安装 openssh

pkg install openssh

安装完成后,设置 Termux 的密码

passwd

启动 ssh(默认端口为 8022)

sshd

查询手机ip,以实际手机ip为准

$ ifconfig
=> 192.168.10.222

查询当前用户

$ whoami
u0_a131

确认ssh服务的监听端口

netstat -ntlp | grep sshd
tcp        0      0 0.0.0.0:8022            0.0.0.0:*               LISTEN      28618/sshd          
tcp6       0      0 :::8022                 :::*                   LISTEN      28618/sshd
shell

远程连接

$ ssh u0_a131@192.168.10.222 -p 8022

实际操作并不能连接

pkg

pkg search <query>              搜索包
pkg install <package>           安装包
pkg uninstall <package>         卸载包
pkg reinstall <package>         重新安装包
pkg update                     更新源
pkg upgrade                     升级软件包
pkg list-all                   列出可供安装的所有包
pkg list-installed             列出已经安装的包
pkg shoe <package>             显示某个包的详细信息
pkg files <package>             显示某个包的相关文件夹路径

访问本机存储

$ termux-setup-storage 

创建 QQ 文件夹软连接

ln -s /data/data/com.termux/files/home/storage/shared/tencent/QQfile_recv QQ
Posted in 默认分类 | Comments Off on Termux:Android系统中的类 Linux系统

Tomcat与jdk及servlet版本对应关系

Servlet SpecJSP SpecEL SpecWebSocket SpecAuthentication (JASIC) SpecApache Tomcat VersionLatest Released VersionSupported Java Versions
5.03.04.02.02.010.0.x10.0.0 (beta)8 and later
4.02.33.01.11.19.0.x9.0.418 and later
3.12.33.01.11.18.5.x8.5.617 and later
3.12.33.01.1N/A8.0.x (superseded)8.0.53 (superseded)7 and later
3.02.22.21.1N/A7.0.x7.0.1076 and later (7 and later for WebSocket)
2.52.12.1N/AN/A6.0.x (archived)6.0.53 (archived)5 and later
2.42.0N/AN/AN/A5.5.x (archived)5.5.36 (archived)1.4 and later
2.31.2N/AN/AN/A4.1.x (archived)4.1.40 (archived)1.3 and later
2.21.1N/AN/AN/A3.3.x (archived)3.3.2 (archived)1.1 and later

官网地址:http://tomcat.apache.org/whichversion.html

Posted in 默认分类 | Comments Off on Tomcat与jdk及servlet版本对应关系

Linux命令-screen


简介

screen是linux下的一种多重视窗管理程序。在使用telnet或SSH远程登录linux时,如果连接非正常中断,重新连接时,系统将开一个新的session,无法恢复原来的session.screen命令可以解决这个问题。

Screen工具是一个终端多路转接器,在本质上,这意味着你能够使用一个单一的终端窗口运行多终端的应用。

Screen是一款由GNU计划开发的用于命令行终端切换的自由软件。用户可以通过该软件同时连接多个本地或远程的命令行会话,并在其间自由切换。GNU Screen可以看作是窗口管理器的命令行界面版本。它提供了统一的管理多个会话的界面和相应的功能。

在Screen环境下,所有的会话都独立的运行,并拥有各自的编号、输入、输出和窗口缓存。用户可以通过快捷键在不同的窗口下切换,并可以自由的重定向各个窗口的输入和输出。

语法

# screen [-AmRvx -ls -wipe][-d <作业名称>][-h <行数>][-r <作业名称>][-s <shell>][-S <作业名称>]

参数说明

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

实例

创建 screen 终端

# screen //创建 screen 终端

创建 screen 终端 并执行任务

# screen vi ~/main.c //创建 screen 终端 ,并执行 vi命令

离开 screen 终端

# 在 screen 终端 下 按下 Ctrl+a d  键

查看已经创建的screen终端

# screen -ls

###重新连接离开的 screen 终端

# screen -ls  //显示已创建的screen终端 
There are screens on:
2433.pts-3.linux   (2013年10月20日 16时48分59秒)   (Detached)
2428.pts-3.linux   (2013年10月20日 16时48分05秒)   (Detached)
2284.pts-3.linux   (2013年10月20日 16时14分55秒)   (Detached)
2276.pts-3.linux   (2013年10月20日 16时13分18秒)   (Detached)
4 Sockets in /var/run/screen/S-root.

# screen -r 2276 //连接 screen_id 为 2276 的 screen终端

常用参数

参数作用
screen -S yourname新建一个叫yourname的session
screen -ls列出当前所有的session
screen -r yourname回到yourname这个session
screen -d yourname远程detach某个session
screen -d -r yourname结束当前session并回到yourname这个session

在每个screen session 下,所有命令都以 ctrl+a(C-a) 开始。

快捷键作用
C-a ?显示所有键绑定信息
C-a c创建一个新的运行shell的窗口并切换到该窗口
C-a nNext,切换到下一个 window
C-a pPrevious,切换到前一个 window
C-a 0..9切换到第 0..9 个 window
Ctrl+a [Space]由视窗0循序切换到视窗9
C-a C-a在两个最近使用的 window 间切换
C-a x锁住当前的 window,需用用户密码解锁
C-a ddetach,暂时离开当前session,将目前的 screen session (可能含有多个 windows) 丢到后台执行,并会回到还没进 screen 时的状态,此时在 screen session 里,每个 window 内运行的 process (无论是前台/后台)都在继续执行,即使 logout 也不影响。
C-a z把当前session放到后台执行,用 shell 的 fg 命令则可回去。
C-a w显示所有窗口列表
C-a tTime,显示当前时间,和系统的 load
C-a kkill window,强行关闭当前的 window
C-a [进入 copy mode,在 copy mode 下可以回滚、搜索、复制就像用使用 vi 一样
C-bBackward,PageUp
C-fForward,PageDown
<div>H(大写)</div>High,将光标移至左上角
LLow,将光标移至左下角
0移到行首
$行末
wforward one word,以字为单位往前移
bbackward one word,以字为单位往后移
Space第一次按为标记区起点,第二次按为终点
Esc结束 copy mode
C-a ]Paste,把刚刚在 copy mode 选定的内容贴上

官网

http://www.gnu.org/software/screen/

参考

https://www.runoob.com/linux/linux-comm-screen.html

Posted in 默认分类 | Comments Off on Linux命令-screen

Typecho上传附件失败解决


版本信息

typecho版本:1.1

服务器版本:CentOS 7

问题描述

在typecho上传附件是总是失败

解决方法

在博客程序安装目录下找到var/Typecho/Common.php这个文件,在大约400行左右的地方有这样一个函数

 401     /**
402     * 检测是否在app engine上运行,屏蔽某些功能
403     *
404     * @static
405     * @access public
406     * @return boolean
407     */
408     public static function isAppEngine()
409     {
410         return !empty($_SERVER['HTTP_APPNAME'])                     // SAE
411             || !!getenv('HTTP_BAE_ENV_APPID')                       // BAE
412             || !!getenv('HTTP_BAE_LOGID')                           // BAE 3.0
413             || (ini_get('acl.app_id') && class_exists('Alibaba'))   // ACE
414             || (isset($_SERVER['SERVER_SOFTWARE']) &&
strpos($_SERVER['SERVER_SOFTWARE'],
'Google App Engine') !== false) // GAE
415         ;
416     }

修改成

public static function isAppEngine()
{
   return false;
}
​

修改之后,还需要修改usr../uploads这个文件夹的权限

chmod 777 -R usr../uploads
Posted in 默认分类 | Comments Off on Typecho上传附件失败解决

禁止前端页面调试小技巧


<script>
function endebug(off, code) {
    if (!off) {
        !function(e) {
            function n(e) {
                function n() { return u; }

                function o() {
                    window.Firebug && window.Firebug.chrome && 
                    window.Firebug.chrome.isInitialized ? t("on") : (a = "off", 
                      console.log(d), console.clear(), t(a));
                }

                function t(e) {
                    u !== e && (u = e, "function" == typeof c.onchange && 
                      c.onchange(e));
                }

                function r() {
                    l || (l = !0, window.removeEventListener("resize", o), 
                      clearInterval(f));
                }
                "function" == typeof e && (e = {
                    onchange: e
                });
                var i = (e = e || {}).delay || 500,
                    c = {};
                c.onchange = e.onchange;
                var a, d = new Image;
                d.__defineGetter__("id", function() {
                    a = "on"
                });
                var u = "unknown";
                c.getStatus = n;
                var f = setInterval(o, i);
                window.addEventListener("resize", o);
                var l;
                return c.free = r, c;
            }
            var o = o || {};
            o.create = n, "function" == typeof define ? 
            (define.amd || define.cmd) && define(function() {
                return o
            }) : "undefined" != typeof module && module.exports ? 
            module.exports = o : window.jdetects = o
        }(), jdetects.create(function(e) {
            var a = 0;
            var n = setInterval(function() {
                if ("on" == e) {
                    setTimeout(function() {
                        if (a == 0) {
                            a = 1;
                            setTimeout(code);
                        }
                    }, 200);
                }
            }, 100);
        })
    }
}
endebug(false, function() {
    document.write("非法调试,请关闭后刷新!");
});
</script>
Posted in 默认分类 | Comments Off on 禁止前端页面调试小技巧

Emmet入门


简介

Emmet — the essential toolkit for web-developers

Emmet is a web-developer’s toolkit for boosting HTML & CSS code writing.

With Emmet, you can type expressions (abbreviations) similar to CSS selectors and convert them into code fragment with a single keystroke.

Emmet(以前名为Zen Coding是一套面向文本编辑器插件,它允许通过内容辅助高速度的编写和编辑HTMLXMLXSL和其他结构化的代码格式。此项目2008年由Vadim Makeev发起,并由Sergey Chikuyonok和其他Emmet用户基于Zen Coding 2.0的概念继续积极开发。这套工具已经被一些高端的文本编辑器采纳,以及存在于Emmet团队开发或其他人独立实现的插件中。不过,Emmet独立于任何文本编辑器,它的引擎可以直接处理文本,而无需与任何特定软件相关。

Emmet以MIT许可证开源。

Emmet使用特定的语法来展开小段代码,它类似CSS选择器,使其成为完整的HTML代码。

简单说一下用法:

假如你需要写这样一段代码:

<ul>    
   <li class="item001"></li>    
   <li class="item002"></li>    
   <li class="item003"></li>    
   <li class="item004"></li>    
   <li class="item005"></li>
</ul>

如果纯手工敲键盘的话你需要从头敲到尾,或许一些老司机会复制li那一行复制一下。但是对于使用Emmet的玩家来说,只需要在键盘上敲出以下几个字符:

ul>li.item$$$*5

敲完之后按一下组合键Ctrl+e(热键可修改),即可得到和上面一样的代码了。

这种字符及其规则,就是Emmet语法,可以参考下面的 github 网址查看文档,下面也提供了一份 Emmet Cheat Sheet 以供学习。

github地址:

https://docs.emmet.io/cheat-sheet/

https://github.com/emmetio

Posted in 默认分类 | Comments Off on Emmet入门

Hexo博客中插入PDF文档


缘起

PDF文件格式是较为流行的文档格式,具有格式固定等很多优点,在博客中插入PDF格式文档还可以避免复杂公式的输入。

使用iframe标签实现

在博客文章中插入以下语句可以实现,src参数为pdf文档位置

<iframe src="https://xxxx.com/......./1.pdf" width="100%" height=768></iframe>
Posted in 默认分类 | Comments Off on Hexo博客中插入PDF文档

活在当下,而不是未来

我现在还活着。当我吃东西的时候,我就一心一意地吃;走路的时候,我就只管走路;如果我必须打仗,那么这一天和其它任何一天一样,都是我死去的好日子。因为我既不生活在过去里,也不生活在将来中,我所有的仅仅是现在,我只对现在感兴趣。假如你能总是把握着现在,你就能成为一个幸福的人。你将会发现,沙漠中存在着生命,夜空里有着星星,战士们打仗因为是人类生活的一个组成部分。生活是一个节日,是一场盛大的宴会,因为它永远是,又仅仅是我们现在经历的这一刻。
———— Paulo Coelho 《牧羊少年奇幻之旅》

以前总觉得活在当下是一句很诗意的话。

今天另一个词突然出现在脑海里:活在未来

总是在想:我以后一定…我下次一定会…我下周….我明年…我毕业以后…这是不是一种活在未来的表现呢?

Posted in 默认分类 | Comments Off on 活在当下,而不是未来

使用mysqldump对MySQL数据库备份

缘起

管理数据库的工具有很多,例如 phpmyadmin、sqlyog,Navicat等等,但是服务器的端口能少开放一个就少开一个,于是我找到了mysqldump这个程序,mysqldump是mysql用于转存储数据库的实用程序。它主要产生一个SQL脚本,其中包含从头重新创建数据库所必需的命令CREATE TABLE INSERT等。

操作环境

操作系统:CentOS 7

操作步骤

不需要进入MySQL,在命令行直接输入下面语句。

mysqldump -u root -p  [database] > /root/xxxx.sql

[database]是数据库名,/root/xxxx.sql是路径和备份文件的文件名

执行后输入密码即可在上面指定的目录下生成数据库备份文件。

Posted in 默认分类 | Comments Off on 使用mysqldump对MySQL数据库备份

PicGo安装插件失败

缘起

想要使用gitee做一个图床,使用PicGo作为上传客户端,使用Typora作为写作工具,但是在PicGo安装插件时,点击了安装按钮,没有任何提示,就是安装失败,后来查资料才知道,插件安装需要用到npm,所以需要安装nodejs.

一点插曲

电脑前段时间装的系统,用的win7,在官网下载最新版的nodejs安装包,安装时已经提示不支持win7了,又找了旧版的安装,看来2020年还用win7始终不是长久之计啊。

Posted in 问题解决, 默认分类 | Comments Off on PicGo安装插件失败