yum install -y gcc gcc-c++ cmake ncurses ncurses-devel bison
分类: Linux系统
-
Ubuntu20.04 使用root用户登录
- 一:设置root用户密码
- passwd root
- 二:修改配置文件
- 2.1:修改50-ubuntu.conf
- vi /usr/share/lightdm/lightdm.conf.d/50-ubuntu.conf
[Seat:*] user-session=ubuntu greeter-show-manual-login= true- 2.1:修改gdm-autologin和gdm-password
- vi /etc/pam.d/gdm-autologin
#auth required pam_succeed_if.so user != root quiet_success- vi /etc/pam.d/gdm-password
- #auth required pam_succeed_if.so user != root quiet_success
- 2.2:修改/root/.profile文件
- 新增加一行 tty -s && mesg n || true
if [ “$BASH” ]; then
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
fi
tty -s && mesg n || true
mesg n 2> /dev/null || true- 三:重启系统使其生效
CebtOS7 root直接登陆
passwd root 设置root密码
/etc/ssh/sshd_config
PermitRootLogin yes
-
Ubuntu 20.04 阿里云源https://mirrors.aliyun.com/ubuntu/
deb http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ focal-proposed main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-proposed main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse -
WordPress设置强制跳转登录
修改 每个主题的 header.php文件
路径一般如下:
./wordpress/wp-content/themes/blocksy/
<?php
get_currentuserinfo();global $user_ID;
if ($user_ID == ”) { header(‘Location: /wp-login.php’);
exit();
}
?> -
Hyperf环境部署
yum install -y oniguruma gd libzip yum-utils
nginx
添加nginx源
/etc/yum.repos.d/nginx.repo
[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/8/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true
[nginx-mainline]
name=nginx mainline repo
baseurl=http://nginx.org/packages/mainline/centos/8/$basearch/
gpgcheck=1
enabled=0
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true
yum install -y nginxphp基础环境
yum install -y php php-common php-cli php-devel
yum install -y php-mbstring php-process php-json php-xml php-pear php-bcmath php-opcache php-gd
yum install -y php-pdo php-mysqlnd php-pgsql php-odbc
yum install -y php-pecl-zip
Firebird支持
yum install -y libfbclient2 libfbclient2-devel libib-util libtommath perl-DBD-Firebird
nginx配置
fastcgi_pass unix:/run/php-fpm/www.sock;Hyperf 环境要求
PHP >= 7.4
以下任一网络引擎
Swoole PHP 扩展 >= 4.5,并关闭了 Short Name
Swow PHP 扩展 (Beta)
JSON PHP 扩展
Pcntl PHP 扩展
OpenSSL PHP 扩展(如需要使用到 HTTPS)
PDO PHP 扩展 (如需要使用到 MySQL 客户端)
Redis PHP 扩展 (如需要使用到 Redis 客户端)
Protobuf PHP 扩展 (如需要使用到 gRPC 服务端或客户端)安装php扩展
官网http://php.net/releases/ 下载对应的安装包
php -v
检查php配置路径
whereis php-config
Pcntl PHP 扩展
cd php-7.4.6/ext/pcntl
cd pcntl/
/usr/bin/phpize
./configure –with-php-config=/usr/bin/php-config注意/usr/bin/php-config
检查php配置路径
whereis php-config
make && make installRedis PHP 扩展 (如需要使用到 Redis 客户端)
wget https://pecl.php.net/get/redis-5.3.6.tgz
cd redis-5.3.6/
/usr/bin/phpize
./configure –with-php-config=/usr/bin/php-config
make && make installProtobuf PHP 扩展
yum install -y protobuf.x86_64 protobuf-compiler.x86_64 protobuf-devel.x86_64
wget https://github.com/allegro/php-protobuf/archive/refs/heads/master.zip
/usr/bin/phpize
./configure –with-php-config=/usr/bin/php-config
make && make installSwoole PHP 扩展
wget https://pecl.php.net/get/swoole-4.8.6.tgz
/usr/bin/phpize
./configure –with-php-config=/usr/bin/php-config
make && make install
; Enable swoole extension module
extension=swoole.so
swoole.use_shortname = off ;关闭 Short Name
Installing shared extensions: /usr/lib64/php/modules/添加相应的配置
/etc/php.d/
cat 20-protobuf.ini
; Enable protobuf extension module
extension=protobufrename’.repo”.repo.bak’ /etc/yum.repos.d/*.repo
-
CentOS7图形界面与命令行界面切换
在图形界面使用 ctrl+alt+F2切换到dos界面
dos界面 ctrl+alt+F2切换回图形界面
在命令上 输入 init 3 命令 切换到dos界面
输入 init 5命令 切换到图形界面
如果想系统默认以某种方式启动, 使用systemd创建符号链接指向默认运行级别。
修改方法为:
1.首先删除已经存在的符号链接:
rm /etc/systemd/system/default.target
2.默认级别转换为3(文本模式):
ln -sf /lib/systemd/system/multi-user.target /etc/systemd/system/default.target
或者默认级别转换为5(图形模式):ln -sf /lib/systemd/system/graphical.target /etc/systemd/system/default.target
3.重启:
reboot
centos7以下的版本
以管理员权限编辑/etc/inittab 把 id:5:initdefault: 改为 id:3:initdefault: 就ok。
-
4 个拥有绝佳命令行界面的Linux终端程序(转)
http://www.linuxidc.com/Linux/2017-05/144066.htm
让我们来看几个精心设计的 CLI 程序,以及如何解决一些可发现性问题。
在本文中,我会指出命令行界面的可发现性discoverability缺点以及克服这些问题的几种方法。
我喜欢命令行。我第一次接触命令行是在 1997 的 DOS 6.2 上。我学习了各种命令的语法,并展示了如何在目录中列出隐藏的文件(
attrib)。我会每次仔细检查命令中的每个字符。 当我犯了一个错误,我会从头开始重新输入命令。直到有一天,有人向我展示了如何使用向上和向下箭头按键遍历命令行历史,我被震惊了。后来当我接触到 Linux 时,让我感到惊喜的是,上下箭头保留了它们遍历历史记录的能力。我仍然很仔细地打字,但是现在,我了解如何盲打,并且我能打的很快,每分钟可以达到 55 个单词的速度。接着有人向我展示了 tab 补完,再一次改变了我的生活。
在 GUI 应用程序中,菜单、工具提示和图标用于向用户展示功能。而命令行缺乏这种能力,但是有办法克服这个问题。在深入解决方案之前,我会来看看几个有问题的 CLI 程序:
1、 MySQL
首先让我们看看我们所钟爱的 MySQL REPL。我经常发现自己在输入
SELECT * FROM然后按Tab的习惯。MySQL 会询问我是否想看到所有的 871 种可能性。我的数据库中绝对没有 871 张表。如果我选择yes,它会显示一堆 SQL 关键字、表、函数等。(LCTT 译注:REPL —— Read-Eval-Print Loop,交互式开发环境)
MySQL gif
2、 Python
我们来看另一个例子,标准的 Python REPL。我开始输入命令,然后习惯按
Tab键。瞧,插入了一个Tab字符,考虑到Tab在 Python 源代码中没有特定作用,这是一个问题。
Python gif
好的用户体验
让我看下设计良好的 CLI 程序以及它们是如何克服这些可发现性问题的。
自动补全: bpython
Bpython 是对 Python REPL 的一个很好的替代。当我运行 bpython 并开始输入时,建议会立即出现。我没用通过特殊的键盘绑定触发它,甚至没有按下
Tab键。
bpython gif
当我出于习惯按下
Tab键时,它会用列表中的第一个建议补全。这是给 CLI 设计带来可发现性性的一个很好的例子。bpython 的另一个方面是可以展示模块和函数的文档。当我输入一个函数的名字时,它会显示这个函数附带的签名以及文档字符串。这是一个多么令人难以置信的周到设计啊。
上下文感知补全:mycli
mycli 是默认的 MySQL 客户端的现代替代品。这个工具对 MySQL 来说就像 bpython 之于标准 Python REPL 一样。mycli 将在你输入时自动补全关键字、表名、列和函数。
补全建议是上下文相关的。例如,在
SELECT * FROM之后,只有来自当前数据库的表才会列出,而不是所有可能的关键字。
mycli gif
模糊搜索和在线帮助: pgcli
如果您正在寻找 PostgreSQL 版本的 mycli,请看看 pgcli。 与 mycli 一样,它提供了上下文感知的自动补全。菜单中的项目使用模糊搜索缩小范围。模糊搜索允许用户输入整体字符串中的任意子字符串来尝试找到正确的匹配项。

pgcli gif
pgcli 和 mycli 在其 CLI 中都实现了这个功能。斜杠命令的文档也作为补全菜单的一部分展示。
可发现性: fish
在传统的 Unix shell(Bash、zsh 等)中,有一种搜索历史记录的方法。此搜索模式由
Ctrl-R触发。当再次调用你上周运行过的命令时,例如 ssh或 docker,这是一个令人难以置信的有用的工具。 一旦你知道这个功能,你会发现自己经常会使用它。如果这个功能是如此有用,那为什么不每次都搜索呢?这正是 fish shell 所做的。一旦你开始输入命令,fish 将开始建议与历史记录类似的命令。然后,你可以按右箭头键接受该建议。
命令行规矩
我已经回顾了一些解决可发现性的问题的创新方法,但也有一些基本的命令行功能应该作为每个 REPL 所实现基础功能的一部分:
- 确保 REPL 有可通过箭头键调用的历史记录。确保会话之间的历史持续存在。
- 提供在编辑器中编辑命令的方法。不管你的补全是多么棒,有时用户只需要一个编辑器来制作完美的命令来删除生产环境中所有的表。
- 使用分页器(
pager)来管道输出。不要让用户滚动他们的终端。哦,要为分页器设置个合理的默认值。(记得添加选项来处理颜色代码。) - 提供一种通过
Ctrl-R界面或者 fish 式的自动搜索来搜索历史记录的方法。
总结
在第 2 节中,我将来看看 Python 中使你能够实现这些技术的特定库。同时,请查看其中一些精心设计的命令行应用程序:
- bpython或 ptpython:具有自动补全支持的 Python REPL。
- http-prompt:交互式 HTTP 客户端。
- mycli:MySQL、MariaDB 和 Percona 的命令行界面,具有自动补全和语法高亮。
- pgcli:具有自动补全和语法高亮,是对 psql 的替代工具。
- wharfee:用于管理 Docker 容器的 shell。
了解更多: Amjith Ramanujam 在 5 月 20 日在波特兰俄勒冈州举办的 PyCon US 2017 上的谈话“神奇的命令行工具”。
作者简介:
Amjith Ramanujam – Amjith Ramanujam 是 pgcli 和 mycli 的创始人。人们认为它们很酷,他表示笑纳赞誉。他喜欢用 Python、Javascript 和 C 编程。他喜欢编写简单易懂的代码,它们有时甚至会成功。
via: https://opensource.com/article/17/5/4-terminal-apps
作者:Amjith Ramanujam 译者:geekpi 校对:wxy
-
11个Linux 终端命令
1. 命令行日常系快捷键
如下的快捷方式非常有用,能够极大的提升你的工作效率:
CTRL + U – 剪切光标前的内容
CTRL + K – 剪切光标至行末的内容
CTRL + Y – 粘贴
CTRL + E – 移动光标到行末
CTRL + A – 移动光标到行首
ALT + F – 跳向下一个空格
ALT + B – 跳回上一个空格
ALT + Backspace – 删除前一个单词
CTRL + W – 剪切光标后一个单词
Shift + Insert – 向终端内粘贴文本那么为了让上述内容更易理解来看下面的这行命令。
sudo apt-get intall programname
如你所见,命令中存在拼写错误,为了正常执行需要把“intall”替换成“install”。
想象现在光标正在行末,我们有很多的方法将她退回单词install并替换它。
我可以按两次ALT+B这样光标就会在如下的位置(这里用指代光标的位置)。
sudo apt-get^intall programname
现在你可以按两下方向键并将“s”插入到install中去了。
如果你想将浏览器中的文本复制到终端,可以使用快捷键”shift + insert”。
2. SUDO !!
如果你还不知道这个命令,我觉得你应该好好感谢我,因为如果你不知道的话,那每次你在输入长串命令后看到“permission denied”后一定会痛苦不堪。
sudo !!
如何使用sudo !!?很简单。试想你刚输入了如下命令:
apt-get install ranger
一定会出现“Permission denied”,除非你已经登录了足够高权限的账户。
sudo !! 就会用 sudo 的形式运行上一条命令。所以上一条命令就变成了这样:
sudo apt-get install ranger
如果你不知道什么是sudo,戳这里。
3. 暂停并在后台运行命令
我曾经写过一篇如何在终端后台运行命令的指南。
CTRL + Z – 暂停应用程序
fg – 重新将程序唤到前台如何使用这个技巧呢?
试想你正用nano编辑一个文件:
sudo nano abc.txt
文件编辑到一半你意识到你需要马上在终端输入些命令,但是nano在前台运行让你不能输入。
你可能觉得唯一的方法就是保存文件,退出 nano,运行命令以后在重新打开nano。
其实你只要按CTRL + Z,前台的命令就会暂停,画面就切回到命令行了。然后你就能运行你想要运行命令,等命令运行完后在终端窗口输入“fg”就可以回到先前暂停的任务。
有一个尝试非常有趣就是用nano打开文件,输入一些东西然后暂停会话。再用nano打开另一个文件,输入一些什么后再暂停会话。如果你输入“fg”你将回到第二个用nano打开的文件。只有退出nano再输入“fg”,你才会回到第一个用nano打开的文件。
4. 使用nohup在登出SSH会话后仍运行命令
如果你用ssh登录别的机器时,nohup命令真的非常有用。
那么怎么使用nohup呢?
想象一下你使用ssh远程登录到另一台电脑上,你运行了一条非常耗时的命令然后退出了ssh会话,不过命令仍在执行。而nohup可以将这一场景变成现实。
举个例子,因为测试的需要,我用我的树莓派来下载发行版。我绝对不会给我的树莓派外接显示器、键盘或鼠标。
一般我总是用SSH从笔记本电脑连接到树莓派。如果我在不用nohup的情况下使用树莓派下载大型文件,那我就必须等待到下载完成后,才能登出ssh会话关掉笔记本。可如果是这样,那我为什么要使用树莓派下文件呢?
使用nohup的方法也很简单,只需如下例中在nohup后输入要执行的命令即可:
nohup wget http://mirror.is.co.za/mirrors/linuxmint.com/iso//stable/17.1/linuxmint-17.1-cinnamon-64bit.iso &
5. ‘在’特定的时间运行Linux命令
‘nohup’命令在你用SSH连接到服务器,并在上面保持执行SSH登出前任务的时候十分有用。
想一下如果你需要在特定的时间执行相同的命令,这种情况该怎么办呢?
命令‘at’就能妥善解决这一情况。以下是‘at’使用示例。
at 10:38 PM Fri
at> cowsay ‘hello’
at> CTRL + D上面的命令能在周五下午10时38分运行程序cowsay。
使用的语法就是‘at’后追加日期时间。当at>提示符出现后就可以输入你想在那个时间运行的命令了。
CTRL + D 返回终端。
还有许多日期和时间的格式,都需要你好好翻一翻‘at’的man手册来找到更多的使用方式。
6. Man手册
Man手册会为你列出命令和参数的使用大纲,教你如何使用她们。Man手册看起来沉闷呆板。(我思忖她们也不是被设计来娱乐我们的)。
不过这不代表你不能做些什么来使她们变得漂亮些。
export PAGER=most
你需要安装 ‘most’;她会使你的你的man手册的色彩更加绚丽。
你可以用以下命令给man手册设定指定的行长:
export MANWIDTH=80
最后,如果你有一个可用的浏览器,你可以使用-H在默认浏览器中打开任意的man页。
man -H <command>
注意啦,以上的命令只有在你将默认的浏览器设置到环境变量$BROWSER中了之后才效果哟。
7. 使用htop查看和管理进程
你用哪个命令找出电脑上正在运行的进程的呢?我敢打赌是‘ps’并在其后加不同的参数来得到你所想要的不同输出。
安装‘htop’吧!绝对让你相见恨晚。
htop在终端中将进程以列表的方式呈现,有点类似于Windows中的任务管理器。你可以使用功能键的组合来切换排列的方式和展示出来的项。你也可以在htop中直接杀死进程。
在终端中简单的输入htop即可运行。
htop
8. 使用ranger浏览文件系统
如果说htop是命令行进程控制的好帮手,那么ranger就是命令行浏览文件系统的好帮手。
你在用之前可能需要先安装,不过一旦安装了以后就可以在命令行输入以下命令启动她:
ranger
在命令行窗口中ranger和一些别的文件管理器很像,但是相比上下结构布局,她是左右结构的,这意味着你按左方向键你将前进到上一个文件夹,而右方向键则会切换到下一个。
在使用前ranger的man手册还是值得一读的,这样你就可以用快捷键操作ranger了。
9. 取消关机
无论是在命令行还是图形用户界面关机后,才发现自己不是真的想要关机。
shutdown -c
需要注意的是,如果关机已经开始则有可能来不及停止关机。
以下是另一个可以尝试命令:
pkill shutdown
10. 杀死挂起进程的简单方法
想象一下,你正在运行的应用程序不明原因的僵死了。
你可以使用‘ps -ef’来找到该进程后杀掉或者使用‘htop’。
有一个更快、更容易的命令叫做xkill。
简单的在终端中输入以下命令并在窗口中点击你想杀死的应用程序。
xkill
那如果整个系统挂掉了怎么办呢?
按住键盘上的‘alt’和‘sysrq’不放,然后慢慢输入以下键:
REISUB
这样不按电源键你的计算机也能重启了。
11. 下载Youtube视频
一般来说我们大多数人都喜欢看Youtube的视频,也会通过钟爱的播放器播放Youtube的流媒体。
如果你需要离线一段时间(比如:从苏格兰南部坐飞机到英格兰南部旅游的这段时间)那么你可能希望下载一些视频到存储设备中,到闲暇时观看。
你所要做的就是从包管理器中安装youtube-dl。
你可以用以下命令使用youtube-dl:
youtube-dl url-to-video
你可以在Youtubu视频页面点击分享链接得到视频的url。只要简单的复制链接在粘帖到命令行就行了(要用shift + insert快捷键哟)。
-
SVN版本库的备份、还原、移植(初级篇、中级篇和高级篇)
初级篇:
版本库数据的移植:svnadmin dump、svnadmin load
导出:
$svnlook youngest myrepos //查看到目前为止最新的版本号
$svnadmin dump myrepos > dumpfile //将指定的版本库导出成文件dumpfile
导入:
$svnadmin load newrepos < dumpfile
中级篇:
$svnadmin dump myrepos –r 23 >rev-23.dumpfile //将version23导出
$svnadmin dump myrepos –r 100:200 >rev-100-200.dumpfile //将version100~200导出
对比较大的库可以分解成几个文件导出,便于备份
$svnadmin dump myrepos –r 0:1000 >0-1000.dumpfile
$svnadmin dump myrepos –r 1001:2000 –incremental >1001-2000.dumpfile
$svnadmin dump myrepos –r 2001:3000 –incremental >2001:3000.dumpfile
在导入时,可以将这几个备份文件装载到一个新的版本库中
$svnadmin load myrepos < 0-1000.dumpfile
$svnadmin load myrepos < 1001-2000.dumpfile
$svnadmin load myrepos < 2001:3000.dumpfile
高级篇:
过滤版本库历史:
假设有三个项目的版本库
/RigTMS
/DocProtect
/Odin
现需要将这三个项目转移到独立的三个版本库中,需要做如下操作
1、转储整个版本库
$svnadmin dump /path/to/repos > repos-dumpfile
2、将转储文件三次过滤,每次仅保留一个定级目录,即可以得到三个转储文件
$svndumpfilter include RigTMS < repos-dumpfile > RigTMS-dumpfile
$svndumpfilter include DocProtect < repos-dumpfile > DocProtect-dumpfile
$svndumpfilter include Odin < repos-dumpfile >Odin-dumpfile
3、虽然现在的RigTMS、DocProtect、Odin都可以用来创建一个可用的版本库,但他们保留了原版本库的精确路径结构(例如: RigTMS的顶级目录为/RigTMS/trunk、/RigTMS/branches、/RigTMS/tags,而非我们所需要的/trunk、/branches、/tags),如果要实现目标,需要编辑转储文件,调整Node-path和Copyfrom-path头参数,将路径/RigTMS删除,同时还要转储数据中创建RigTMS目录的部分。
Node-path:RigTMS
Node-action:add
Node-kind:dir
Content-length:0
*****特别注意点:如果使用手工编辑dumpfile文件来移除一个顶级目录,需要注意不要让使用的编辑器将换行符转换为本地格式(比如将/r/n转换为/n),否则文件的内容就与原来的格式不符,这个转储文件就失效了。具体做法就是当你在使用编辑器打开文件的时候,编辑器会提示用户是否需要转换格式,一定要选择“否”,切记!!切记!!
4、接下来就是创建三个新的版本库,然后将新过滤出来并修改好的三个转储文件导入
$svnadmin create RigTMS;svnadmin load RigTMS < RigTMS-dumpfile
$svnadmin create DocProtect;svnadmin load DocProtect < DocProtect-dumpfile
$svnadmin create Odin;svnadmin load Odin < Odin -dumpfile
****备份环境注意点:
1、确保没有其他进程访问版本库,关闭apache、svnserve服务
2、成为版本库的管理员,如果以其他身份还原版本库,可能会改变版本库文件的访问权限,导致在恢复后依旧无法访问
3、svnadmin recover /path/to/repos
4、重新启动服务进程