欢迎光临
我们一直在努力

服务器运维 第9页

Linux系统MySQL备份的导入导出的具体操作教程-学派吧

问题描述 如何对 ECS Linux 系统中的 MySQL 进行备份的导入和导出。 处理办法 MySQL 备份的导出 MySQL 备份的导入 MySQL 备份的导出 注意: 如果您使用的是帮助中心的一键环境配置,那么 MySQL 的安装目录是 /alidata/server/mysql。 如果您将 MySQL 安装到其他目录,您需要输入您 MySQL 完整的安装路径。 单库备份您可以在服务器上执行如下命令: /alidata/server/mysql/bin/mysqldump -uroot -p密码 数据库名 > 备份名称.sql mysqldump 默认不会导出事件表,执行此命令会出现警告 — Warning: Skipping the data of table mysql.event. Specify the –events option explicitly. 如果您需要导出 MySQL 事件,您可以执行如下命令: /alidata/server/mysql/bin/mysqldump -uroot -p密码 --events --ignore-table=mysql.event 数据库名 > 备份名称.sql MySQL 备份的导入 如果您需要导入备份的 .sql 文件,可以在 备份名称.sql 文件所在目录中执行如下命令: /alidata/server/mysql/bin/mysql -uroot -p密码 mysql < 备份名称.sql 也可以通过执行如下命令: /alidata/server/mysql/bin/mysql -uroot -p密码 mysql>use 数据库; mysql>source /root/备份名称.sql; 注意:/root/备份名称.sql 为实际备份文件绝对路径 以上就是Linux系统MySQL备份的导入导出的具体分析的详细内容,更多请关注学派吧-其它相关文章!

赞(0)adminadmin阅读(1793)去评论
Linux vsftpd连接报错:500 OOPS: vsftpd的解决办法详解-学派吧--

Linux vsftpd连接报错:500 OOPS: vsftpd的解决办法详解-学派吧-

问题现象 云服务器 ECS Linux 系统用 vsftpd 搭建的 FTP 服务,客户端连接时提示报错 “500 OOPS: vsftpd: refusing to run with writable root inside chroot()” 处理办法 1. 在服务器上修改Vsftpd的配置文件vsftpd.conf vim /etc/vsftpd/vsftpd.conf # 添加一行配置 allow_writeable_chroot=YES 2. 保存退出,重启一下 vsftp 服务即可。 以上就是Linux vsftpd连接报错:500 OOPS: vsftpd的解决办法详解的详细内容,更多请关注学派吧-其它相关文章!

赞(0)adminadmin阅读(2635)去评论
linux中关于echo命令的用法实例教程-学派吧-

linux中关于echo命令的用法实例教程-学派吧

linux的echo命令, 在shell编程中极为常用, 在终端下打印变量value的时候也是常常用到的, 因此有必要了解下echo的用法,下面这篇文章主要给大家介绍了关于linux中echo命令用法的相关资料,需要的朋友可以参考学习。 前言 对于初学者来说,掌握一些基本命令的常用用法是必须的。本文列举了echo命令的几个常用用法并加以实例说明,以作回顾、参考。 基础 echo命令常用作打印输出字符串,根据echo帮助文件可以获得以下信息: 语法 echo [-neE][arg…] 三个参数: -n : 关闭输出文字时的自动换行 -e : 开启转义字符功能( \ ) -E : (默认)关闭转义字符功能( \ ) 使用-e选项时,如果在字符串中键入以下字符,程序不会将之当成一般字符串输出,而是会使用其转义功能: • \a 发出警告声; • \b 删除前一个字符; • \c 最后不加换行符号并抑制字符后输出; • \f 换行但光标仍旧停留在原来的位置; • \n 换行且光标移至行首; • \r 光标移至行首,但不换行; • \t 水平制表符; • \v 垂直制表符; • \\ 插入\字符; • \0nnn 插入nnn(八进制)所代表的ASCII字符;NNN为0到3位八进制数字 • \xHH 插入HH(十六进制)所代表的ASCII字符;HH为1到2位十六进制数字 实例 1、打印输出一行字符串 2、使用”\b” 选项 相当于退格符 3、使用”\c” 选项 不打印输出\c 以后的字符,并且结果不换行(使用-n 选项只是输出结果不换行) 4、使用”\n” 选项 相当于在\n 后插入新行 5、使用”\r” 选项 回车,光标移至首位,但不换行 6、使用”\0NNN” 选项 返回八进制多代表的ASCII字符 7、使用”\xHH” 选项 返回16进制数所代表的ASCII字符 8、打印输出bash环境变量 延伸: 单引号”; 双引号””; 反向单引号“引用强弱程度比较 从运行结果不难看出,”单引号是强引用,不完成变量替换;“反向单引号是弱引用,可以实现命令和变量替换;””双引号强弱程度据两者中间,只可以实现变量替换 总结 以上就是linux中关于echo命令的用法实例教程的详细内容,更多请关注学派吧-其它相关文章!

赞(0)adminadmin阅读(1464)去评论

学派吧-linux如何利用CSF防火墙屏蔽恶意请求的详细介绍-linux教程

学派吧-本篇文章主要介绍了linux利用CSF防火墙屏蔽恶意请求,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧 问题最近不知道为什么,恶意代理的请求数越来越多,明明我返回的都是403Forbidden,但是由于数量实在庞大,还是消耗了我大量的带宽和资源。之前的方法已经没有用了,想了半天还是研究研究防火墙吧,虽然仅仅靠Apache也能对某些IP进行黑名单设置,但是感觉还是有点麻烦的。比如最常见的用iptables,或者是ufw,虽然都能很好的做到管理,但是他们基本都需要一条一条的加,十分麻烦。 网上搜索了下,找到了一个挺方便的小工具–CSF(ConfigServer & Security Firewall),这个工具据说除了能够方便的管理IP blacklist,而且也能稍加配置抵御一定量的DDOS攻击。 安装工具本身可以在csf工具的官网上下载。 下载并解压后可以参考其中的install.txt的说明进行安装,讲的简洁而且详细,注意给权限就行。需要说明的是,这个工具其实也是基于iptables,只是简化了命令而已。 关于ddos的防护 根据readme.txt的描述,进行ddos防护的功能主要是靠/etc/csf/csf.conf中的配置进行控制的,尤其是当中的PORTFLOOD参数,一般都进行如下设置: #Syntax for the PORTFLOOD setting: #PORTFLOOD is a comma separated list of: port;protocol;hit count*;interval seconds #So, a setting of PORTFLOOD = "22;tcp;5;300,80;tcp;20;5" means: #1. If more than 5 connections to tcp port 22 within 300 seconds, then block #that IP address from port 22 for at least 300 seconds after the last packet is #seen, i.e. there must be a "quiet" period of 300 seconds before the block is #lifted #2. If more than 20 connections to tcp port 80 within 5 seconds, then block #that IP address from port 80 for at least 5 seconds after the last packet is #seen, i.e. there must be a "quiet" period...

赞(0)adminadmin阅读(1724)去评论
学派吧-Linux下g++编译以及使用静态库和动态库的方法教程-

学派吧-Linux下g++编译以及使用静态库和动态库的方法教程

学派吧下面小编就为大家带来一篇php.cn/wiki/1497.html” target=”_blank”>Linux下g++编译与使用静态库和动态库的方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧 在windows环境下,我们通常在IDE如VS的工程中开发C++项目,对于生成和使用静态库(*.lib)与动态库(*.dll)可能都已经比较熟悉,但是,在linux环境下,则是另一套模式,对应的静态库(*.a)与动态库(*.so)的生成与使用方式是不同的。刚开始可能会不适应,但是用多了应该会习惯这种使用,因为步骤上并没有VS下配置那么繁琐。 下面就分别总结下linux下生成并使用静态库与动态库的方法:(由于是C++项目,所以编译器用的g++,但是与gcc的使用是相通的) 首先是准备工作,把我们需要封装成库文件的函数的头文件与源文件写好,如下: //myAPI.h int ADD(int a, int b); int MINUS(int a, int b); //myAPI.cpp #include "myAPI.h" int ADD(int a, int b){ return a + b; } int MINUS(int a, int b){ return a - b; } 接下来准备一个测试用的主函数源文件: //main.cpp #include "myAPI.h" #include <iostream> int main(){ std::cout << "1 + 1 = " << ADD(1, 1) << std::endl; std::cout << "1 - 1 = " << MINUS(1, 1) << std::endl; return 0; } 最后,先编译我们的 myAPI.cpp 文件生成 myAPI.o 目标文件 g++ -c myAPI.cpp 1.生成静态库并使用 Linux下用生成静态库的命令 ar 处理 myAPI.o 文件生成静态库文件,生成的库文件应遵循规范,及linux下库文件加“lib”前缀。所以针对本例,通过如下一条命令即可生成 libmyAPI.a 静态库: ar crv libmyAPI.a myAPI.o 接下来即可在项目编译过程中利用静态库了,此时 myAPI.cpp 这个库函数的定义文件已经不需要了。main.cpp 编译命令如下(注意,依赖的静态库文件要放在被依赖项后面): g++ main.cpp libmyAPI.a -o output 编译通过后即可运行可执行文件 output , 此时 libmyAPI.a 也已经是不需要的了。执行命令并输出结果如下: ./output 2.生成动态库并使用 linux下编译时通过 -shared 参数可以生成动态库(.so)文件,如下 g++ -shared -fPIC -o libmyAPI.so myAPI.o...

赞(0)adminadmin阅读(1389)去评论
学派吧-Linux使用exec函数实现进程替换的代码-Linux教程-

学派吧-Linux使用exec函数实现进程替换的代码-Linux教程

学派吧-这篇文章主要介绍了Linux 进程替换(exec函数)实现代码的相关资料,需要的朋友可以参考下 Linux 进程替换(exec函数)实现代码 # include<stdio.h> #include<stdlib.h> #include<unistd.h> #include<fcntl.h> #include<sys/types.h> #include<sys/stat.h> #include<string.h> int main() { pid_t id=fork(); if(id==0) { printf("child is running\n"); sleep(1); char* env[]={"MYENV=/A/B/C/D/AAAA",NULL}; char* argv[]={"ls","-l","-n","-i",NULL}; // execl("/bin/ls","ls","-l","-n","-i",NULL); // execlp("ls","ls","-l","-n","-i",NULL); // execv("/bin/ls",argv); // execvp("ls",argv); // execle("./myenv","myenv",NULL,env); execve("./myenv",argv,env); printf("child id done\n"); //exec成功的话不执行此语句 exit(1); } else { pid_t ret=waitpid(id, NULL,0); if(ret>0) { printf("father wait success\n"); } else{ printf("child quit not normal\n"); } } return 0; } 下图就是execl execlp execv execvp的结果图 下图是execle execve的结果图 以上就是Linux使用exec函数实现进程替换的代码分享的详细内容,更多请学派吧其它相关文章!

赞(0)adminadmin阅读(1379)去评论
学派吧-使用Linux的alternatives命令替换选择软件的版本方法详解-linux教程-

学派吧-使用Linux的alternatives命令替换选择软件的版本方法详解-linux教程

学派吧-下面小编就为大家带来一篇使用Linux的alternatives命令替换选择软件的版本方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧 上周在安装搜索引擎Elasticsearch时,要求安装比较新的java 版本,我选择了java 1.8.0,安装java 成功后使用java -version 发现使用的版本仍旧是1.6.0, 查询了一些资料,发现可以使用Linux的alternatives命令替换选择软件的版本。 说明: alternatives –install <link> <name> <path> <priority> 其中, install表示安装 link是符号链接 name则是标识符 path是执行文件的路径 priority则表示优先级 一:先来看看目前java的版本 二:使用Linux的alternatives命令安装java 1.8.0 1. 先用alternatives查看目前系统中有哪些java版本 alternatives –config java 2. 使用alternatives命令安装java 1.8.0 alternatives –install /usr/bin/java java /usr/local/java/jre1.8.0_131/bin/java 4 解释: /usr/bin/java 是java命令的路径,用which java查看,对应参数<link> java对应参数<name> /usr/local/java/jre1.8.0_131/bin/java对应<path>,表示java1.8.0 的java命令的路径 数字4 对应 参数<priority> ,因为已经有3个程序提供java了,所以要写4 3.用alternatives –config java 查看安装java 1.8.0 成功没有 划红线的java就是我刚刚安装的,说明安装成功 三:选择java版本 alternatives –config java 看到的结果和二(3)的结果一样,注意最后一句英文:Enter to keep the current selection[+], or type selection number ,翻译过来就是按Enter键来保存当前选择[+],或渐入选择号码。我键入号码4 表示我选择使用java 1.8.0 四:使用java -version查看选择的版本 以上就是使用Linux的alternatives命令替换选择软件的版本方法详解的详细内容,更多请关注学派吧其它相关文章!

赞(0)adminadmin阅读(1448)去评论

学派吧-Linux不常用却很有用的命令-linux教程

which命令 用于查找并显示给定命令的绝对路径,环境变量PATH中保存了查找命令时需要遍历的目录。which命令会在环境变量PATH设置的目录里查找符合条件的文件。也就是说,使用which命令,就可以看到某个系统命令是否存在,以及执行的到底是哪一个位置的命令。 whereis命令 用来定位命令的二进制程序、源代码文件和man手册页等相关文件的路径。 locate/slocate命令 用来查找文件或目录。 type命令 用来显示指定命令的类型,判断给出的命令是内部命令还是外部命令。 getconf命令 Get the configuration value for variable VAR, or for variable PATH_VAR for path PATH. If SPEC is given, give values for compilation environment SPEC. getconf LONG_BIT # 查看当前操作系统的位数 lsb_release命令 LSB是Linux Standard Base的缩写,lsb_release命令用来显示LSB和特定版本的相关信息。如果使用该命令时不带参数,则默认加上-v参数。 uname命令 用于打印当前系统相关信息(内核版本号、硬件架构、主机名称和操作系统类型等)。 以上就是Linux不常用却很有用的命令的详细内容,更多请关注学派吧其它相关文章!

赞(0)adminadmin阅读(1526)去评论
学派吧-Zabbix-agent客户端的编译安装-linux教程-

学派吧-Zabbix-agent客户端的编译安装-linux教程

系统环境: CentOS 6.8 官网下载安装包:http://www.zabbix.com/download 本文用的是Zabbix 3.0 LTS 上传至客户端服务器并解压 tar xzvf zabbix-3.0.9.tar.gz 进入解压后的文件夹开始编译安装 ./configure --prefix=/usr/local/zabbix --enable-agent          //指定路径make && make install                             //编译安装 复制安装包中的文件到安装路径下 /root/zabbix-./misc/init.d/fedora/core/zabbix_agentd /etc/init.d//etc/init.d/zabbix_agentd 启动agent服务 groupadd zabbix             //添加zabbix组useradd zabbix -g zabbix           //添加zabiix用户service zabbix_agentd start        //启动服务 配置agent vim /usr/local/zabbix/etc/zabbix_agentd.conf Server=127.0.0.1 >> Server="服务端IP“ //如不在统一网段,需要添加多个IP、网关IPServerActive=127.0.0.1 >> ServerActive="服务端IP”Hostname=Zabbix server >> Hostname="本机IP” 客户端开启端口10050 /sbin/iptables -I INPUT -p tcp --dport -/sbin/iptables -I INPUT -p tcp --dport -j ACCEPT /etc/rc.d/init.d/iptables save service zabbix_agentd restart              服务端web设置 配置—主机—创建主机 查看状态如图ZBX亮起为成功! 以上就是Zabbix-agent客户端的编译安装的详细内容,更多请关注php中文网其它相关文章!

赞(0)adminadmin阅读(1870)去评论
学派吧-iptables基本概念和原理 -linux教程-

学派吧-iptables基本概念和原理 -linux教程

概述 iptables是linux自带的防火墙软件,用于配置IPv4数据包过滤或NAT(IPv6用ip6tables)。 在linux上,防火墙其实是系统内核的一部分,基于Netfilter构架,基本原理就是在内核网络层数据包流经的不同位置放置一些钩子(hook),利用这些嵌入网络层的hook来对数据抓取、控制或修改,iptables其实只是默认的netfilter控制管理工具,所以使用ps或者top看不到有一个“防火墙”的进程存在,防火墙是不能被卸载也不能关闭的,大家熟知的"service iptables stop"或者“/etc/init.d/iptables stop”命令只不过是清空所有策略和表,并把默认策略改为ACCEPT(允许)而已。 iptables有以下几个重点概念:: table(表):iptables内置4个table,不同的table代表不同的功能,每个table可以包含许多chain,不同类型的table对所能包含的chain和策略中的target的使用做了限定,一些target不能在一些table中使用。用户不能自定义table; chain(链):chain可用包括一系列的策略,通过配置不同的chain可以对不同作用的策略进行分类,iptables内置5个chain对应netfilter的5个hook,用户也可以自定义chain; command(命令):command是对表或链的操作动作,比如添加、删除、修改等等; rule-specification(策略):包括下面的匹配规则和目标; match(匹配规则):定义本条策略适用于那些数据包,匹配规则可以包括协议、源/目的地址、端口等等; target(目标):对匹配上规则的数据包采取的操作,target可以是一个动作或者自定义chain,常见的动作有丢弃(DROP)、允许(ACCEPT)、NAT等等,当target是自定义chain时,数据包进入自定义chain继续匹配; policy(默认策略):内置chain的默认动作,每个chain只能有一个policy,如果数据包匹配某条chain匹配完最后一条策略依然没有匹配上,那么就采用policy的默认动作。policy不匹配规则,而且target只能是丢弃(DROP)或允许(ACCEPT),自定义chain不能定义policy。 表 iptables的4个表分别是: filter(过滤):数据包过滤/拦截,可以包含INPUT、FORWARD、OUTPUT这3个内置chain。 nat(地址转换):IP地址或端口号转换,可以包含PREROUTING、OUTPUT、POSTROUTING 3个内置chain,nat table在会话建立时会记录转换的对应关系,同一会话的回包和后续报文会自动地址转换,这是因为nat使用了ip_conntrack模块。 mangle(包管理):用来修改IP报文,可以包含PREROUTING、OUTPUT、INPUT、FORWARD、POSTROUTING 5个内置chain。 raw:此表的优先级高于ip_conntrack模块和其它的table,主要用于将有会话状态的连接(比如tcp)的数据包排除在会话外。可以包含POSTROUTING、OUTPUT两个内置chain。 看到这里肯定会有这样的疑问,为什么table只能包含一些而不是全部的chain呢?我想这个构架是按需设计而不是按功能设计的,尽管table不是包含所有的chain,但是每种功能的table都包含了实现这种功能所需的chain,即使包含更多的chain也是累赘或者无用的,而且实际上用起来也的确如此,够用了。 还有就是不同table生效优先顺序问题,先后优先级是这样的: raw > mangle > nat > filter 所以,如果有filter禁止ping目的地址2.2.2.2,而nat又有策略将目的地址1.1.1.1转换成2.2.2.2,那么ping 1.1.1.1是ping不通的。 不过一般情况下filter是不会和nat的策略打起架来,比如INPUT chain能做filter,却不能做nat,PREROUTING能做nat却不能做filter,而且PREROUTING只能做目的地址转换,不会对源地址过滤的需求造成麻烦,所以通常是不会相互干扰的。 链 iptables内置的5个chain:PREROUTING、INPUT、OUPUT、FORWARD、POSTROUGING,这5个chain分别与netfilter中数据转发路径上的5个不同的位置挂钩,以匹配筛选不同类型的数据流,如下图所示: 其中: PREROUTING链:应用于所有进入机器的ip包,包括目的地址是本机和目的地址非本机的包。 INPUT链:应用于所有目的是本机的包,也就是目的IP是本机接口地址,所有发给本地socket的数据都经过它。 OUPUT链:应用于所有由本机产生的包,所有应用程序发出的数据都经过它。 FORWARD链:应用于所有经过路由决策被转发的包,也就是目的地址不是本机的数据包。 POSTROUGING链:应用于所有发出机器的IP包,包括本机发出的和从本机转发的数据包。 策略匹配按照重上到下的顺序进行,当测试到某策略匹配时执行target并跳出,不再向下匹配,当测试到最后一条策略仍不匹配时,则采用policy指定的动作,如下图: 除了内置chain外,还可以自定义chain,自定义chain并不能利用netfilter的hook来捕捉数据包,但是可用于策略的分类,比如有3类不同的用户访问主机上的不同服务,如果所有策略都放在INPUT chain中策略会多而难以维护,这个时候就可以定义3个自定义chain,分别配置不同的策略,同时在INPUT chain中添加策略对来访者分类并将目标指向3个自定义chain。 自定义chain大显神威的地方在于动态生成策略,例如VPN服务器上,需要对不同分组的用户区别对待管理,但是用户IP是随机分配的,不能根据IP来区分用户组,这时候可以预先定义好各组chain,利用VPN服务端软件的一些钩子,当用户登陆时自动添加策略引导到自定义chain上来匹配。如果这时候没有自定义chain,那么策略的数量将是(用户数×所属组策略数),每增加一个用户,都要把所属组的全部策略添加一遍,这样大量的时间花费在策略匹配上,性能下降很快。 命令 命令用来操作表和链,可以做这些操作: 清空一个table中包含的所有chain 创建、重命名或删除一个自定义chain,清空一个内置chain或者给内置chain设置policy(默认策略) 在某个chain中追加、删除、修改一条策略 显示策略 由于本文只讲概念和原理,所以暂时不提命令,命令的详细使用方法会在“iptables实用教程(二)”里说明。 以上就是iptables基本概念和原理 的详细内容,更多请关注学派吧其它相关文章!

赞(0)adminadmin阅读(1705)去评论
学派吧-shell一个空格引起的异常-linux教程-

学派吧-shell一个空格引起的异常-linux教程

学派吧-最近使用shell编写一个备份和替换f服务器程序的脚本replace.sh,初衷是为了节约人力的重复机械的劳动。在脚本编写过程中,由于疏忽多打了一个空格,出现了一个不符合预期的情况。 1.先看一下出问题的replace.sh  清单1:replace.sh 1 #!/bin/sh 2 file="mv.sh" #日志清理脚本 3 bak="mv" 4 replace="scp" 5 hostPath="/data/kuyin_new/musicsearch/bin/logs" 6 #hostList=(172.16.72.50 172.16.72.56 172.16.72.58 172.16.72.76 172.16.72.78 172.16.72.96 172.16.72.98) 7 hostList=(172.16.72.50) 8 for host in ${hostList[*]} 9 do10 bakCmd= "ssh $host $bak ${hostPath}/$file ${hostPath}/${file}.bak" #先备份目标机器上的脚本,这里=之后多打了一个空格11 echo $bakCmd #这里先打印一下bakCmd命令,看一下12 #bash -c "$bakCmd"13 #replaceCmd="$replace $file ${host}:${hostPath}" #拷贝至目标机器14 #finalCmd="${bakCmd} ; ${replaceCmd}"15 #echo $replaceCmd16 #echo $finalCmd17 #bash -c "$finalCmd"18 done 执行脚本,运行结果如下:   多打了一个空格,之后bash replace.sh运行脚本,出现了不符合预期的情况:ssh 172.16.72.50 mv /data/kuyin_new/musicsearch/bin/logs/mv.sh /data/kuyin_new/musicsearch/bin/logs/mv.sh.bak(ssh $host $bak ${hostPath}/$file ${hostPath}/${file}.bak经过变量替换后的结果) 命令竟然执行了!而我的初衷是用echo查看这个命令组合的是不是正确,这条命令并不会被执行。那么为什么会出现这种情况呢?   为了找出问题,可以通过bash -x replace.sh运行脚本。“-x”选项使shell在执行脚本的过程中把它实际执行的每一个命令行显示出来,并且在行首显示一个"+"号。 "+"号后面显示的是经过了变量替换之后的命令行的内容,有助于分析实际执行的是什么命令。 “-x”选项使用起来简单方便,可以轻松对付大多数的shell调试任务,应把其当作首选的调试手段。执行bash -x replace.sh,结果如下:      可以看出,replace.sh中的第10行被拆成了2条命令(黄色框和红色框共2条命令),因此ssh $host $bak ${hostPath}/$file ${hostPath}/${file}.bak才会被执行。下面去掉第10行多出的空格,看一下效果。 2. 正常的replace.sh   清单2:replace.sh 1 #!/bin/sh 2 file="mv.sh" #日志清理脚本 3 bak="mv" 4 replace="scp" 5 hostPath="/data/kuyin_new/musicsearch/bin/logs" 6 #hostList=(172.16.72.50 172.16.72.56 172.16.72.58 172.16.72.76 172.16.72.78 172.16.72.96 172.16.72.98) 7 hostList=(172.16.72.50) 8 for host in ${hostList[*]} 9 do10 bakCmd="ssh $host $bak ${hostPath}/$file ${hostPath}/${file}.bak"...

赞(0)adminadmin阅读(1869)去评论

学派吧-Linux下安装配置MySQL的教程-linux教程

mysql最流行的关系型数据库之一,目前隶属于oracle公司,因体积小、速度快、总体拥有成本低,开放源代码这一特点,所以是我们日常开发的首选。下面我们来看看如何在Linux下安装配置MySQL 系统:Ubuntu 16.04LTS 1\官网下载mysql-5.7.18-linux-glibc2.5-x86_64.tar.gz 2\建立工作组: $su #groupadd mysql #useradd -r -g mysql mysql 3\创建目录 #mkdir /usr/local/mysql #mkdir /usr/local/mysql/data 4\解压mysql-5.7.18-linux-glibc2.5-x86_64.tar.gz,并拷贝至/usr/local/mysql #tar -zxvf mysql-5.7.18-linux-glibc2.5-x86_64.tar.gz #cp -r /home/jieyamulu/mysql-5.7.18-linux-glibc2.5-x86_64/* /usr/local/mysql 5\修改mysql用户对mysql以下及其子文件夹以下文件的权限,修改后可使用ll查看权限 root@Ice-***:/usr/local# chown -R mysql:mysql mysql root@Ice-***:/usr/local# ll 总用量 44 drwxr-xr-x 11 root root 4096 5月 19 07:39 ./ drwxr-xr-x 11 root root 4096 2月 16 04:30 ../ drwxr-xr-x 2 root root 4096 2月 16 04:19 bin/ drwxr-xr-x 2 root root 4096 2月 16 04:19 etc/ drwxr-xr-x 2 root root 4096 2月 16 04:19 games/ drwxr-xr-x 2 root root 4096 2月 16 04:19 include/ drwxr-xr-x 4 root root 4096 2月 16 04:23 lib/ lrwxrwxrwx 1 root root 9 3月 29 14:11 man -> share/man/ drwxr-xr-x 10 mysql mysql 4096 5月 19 07:48 mysql/ drwxr-xr-x...

赞(0)adminadmin阅读(2017)去评论

学派吧-linux下Shell如何获取某目录下所有文件夹的名称详解-linux教程

学派吧-这篇文章主要介绍了linux Shell获取某目录下所有文件夹的名称,需要的朋友可以参考下 查看目录下面的所有文件: #!/bin/bash cd /目标目录 for file in $(ls *) do echo $file done 延伸的方法,查看目录下面的所有目录 #!/bin/bash cd /export/bak/original_document for dir in $(ls split*) do [ -d $dir ] && echo $dir #先判断是否是目录,然后再输出 done 以上就是linux下Shell如何获取某目录下所有文件夹的名称详解的详细内容,更多请关注学派吧其它相关文章!

赞(0)adminadmin阅读(1433)去评论

学派吧-linux中xargs命令技巧的各种使用详解-linux教程

xargs是给命令传递参数的一个过滤器,也是组合多个命令的一个工具。下面这篇文章主要给大家介绍了关于linux中xargs命令用法的相关资料,需要的朋友可以参考借鉴,下面来跟着小编一起看看吧。 前言 xargs命令是把接收到的数据重新格式化,再将其作为参数提供给其他命令,下面介绍xargs命令的各种使用技巧,一起来看看吧。 一、将多行输入转换成单行输入: [root@host1 test]# echo -e "1 2 3 4 5 \n6 7 8 \n9 10 11 12" >example.txt [root@host1 test]# cat example.txt 1 2 3 4 5 6 7 8 9 10 11 12 [root@host1 test]# cat example.txt |xargs 1 2 3 4 5 6 7 8 9 10 11 12 将单行输入转换成多行输出: [root@host1 test]# cat example.txt | xargs -n 3 1 2 3 4 5 6 7 8 9 10 11 12 自定义定界符进行转换(默认的定界符是空格): [root@host1 test]# echo "Hello:Hello:Hello:Hello" | xargs -d : -n 2 Hello Hello Hello Hello 二、在脚本中运用: [root@host1 test]# cat echo.sh #!/bin/bash echo $* '^-^' 当参数传递给echo.sh后,它会将这些参数打印出来,并且以"^-^"作为结尾: [root@host1 test]# echo -e "Tom\nHarry\nJerry\nLucy" > args.txt [root@host1 test]# cat args.txt | xargs bash echo.sh Tom Harry Jerry Lucy ^-^...

赞(0)adminadmin阅读(1557)去评论

学派吧-Linux下安装配置tomcat的详细介绍-linux教程

Tomcat是一个轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP程序的首选。对于一个初学者来说,可以这样认为,当在一台机器上配置好Apache服务器,可利用它响应对HTML 页面的访问请求。 首先需要安装配置JDK,这里简单回顾下.Linux下用root身份在/opt/文件夹下创建jvm文件夹,然后使用tar -zxvf jdk-8u121-linux-x64.tar.gz -C /opt/jvm/ 将文件解压至jvm中,然后以root身份修改/etc/profile文件,在最后四行加入: export JAVA_HOME=/opt/jvm/jdk1.8.0_121 export JRE_HOME=${JAVA_HOME}/jre export CLASS PATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib export PATH=${JAVA_HOME}/bin:$PATH 保存退出即可。 配置好环境变量后可使用sudo update-alternatives –config java 命令查看已有环境变量。 java -version测试JDK是否安装成功。 下面切入正题,安装配置tomcat。 1、下载tomcat: Core: zip (pgp, md5, sha1) tar.gz (pgp, md5, sha1) 进入tomcat官网点击download,下载zip或tar.gz这两项。 2、解压至/home/文件夹下 3、进入文件夹,加执行权限。命令: :~/apache-tomcat-9.0.0.M21/bin$ sudo chmod +x *.sh 4、 :~/apache-tomcat-9.0.0.M21/bin$ ./startup.sh 启动成功。 查看日志: :~/apache-tomcat-9.0.0.M21/logs$ cat catalina.out 打开浏览器,输入网址:localhost:8080进入主页。 以上就是Linux下安装配置tomcat的详细介绍的详细内容,更多请关注学派吧其它相关文章!

赞(0)adminadmin阅读(1524)去评论
学派吧-利用ssh反向代理以及autossh实现从外网连接内网-linux教程-

学派吧-利用ssh反向代理以及autossh实现从外网连接内网-linux教程

前言 最近遇到这样一个问题,我在实验室架设了一台服务器,给师弟或者小伙伴练习Linux用,然后平时在实验室这边直接连接是没有问题的,都是内网嘛。但是回到宿舍问题出来了,使用校园网的童鞋还是能连接上,使用外网的小土豪就没有办法进入内网。这时能不能有一个办法可以使得通过外网连接到内网的服务器呢?答案是有的,不过这里就需要以下条件:一台在外网能访问到的服务器。 1. 描述一下目前的机器状况,梳理梳理: 机器 IP 用户名 备注 A 10.21.32.106 gdut728 目标服务器,处于内网 B 123.123.123.123 root 外网服务器,相当于桥梁的作用 PS:123.123.123.123只是我随意起的,大家请别攻击别人的服务器啊啊啊 2. 解决方法: 通俗地说:就是在机器A上做到B机器的反向代理;然后在B机器上做正向的代理实现本地端口的转发 2.1 实现前的准备 每台都要安装ssh的客户端。 在这里我使用的是centos7,都自带ssh。如果是使用其他版本Linux,请手动Google一下咯。 2.2 介绍一下使用到的ssh参数: 反向代理 ssh -fCNR 正向代理 ssh -fCNL -f 后台执行ssh指令 -C 允许压缩数据 -N 不执行远程指令 -R 将远程主机(服务器)的某个端口转发到本地端指定机器的指定端口 -L 将本地机(客户机)的某个端口转发到远端指定机器的指定端口 -p 指定远程主机的端口 ******************区分大小写啊各位亲****************** 3. 首先在A上面操作: 建立A机器到B机器的反向代理,具体指令为 ssh -fCNR [B机器IP或省略]:[B机器端口]:[A机器的IP]:[A机器端口] [登陆B机器的用户名@服务器IP] 在这里我使用了B机器的7280端口,以及A机器的22端口,按照上面的指令就是这样子的操作 ssh -fCNR 7280:localhost:22 root@123.123.123.123 检验是否已经启动了可以使用ps aux | grep ssh指令来查看: 4. 接着在B上面操作: 建立B机器的正向代理,用来做转发,具体指令为 ssh -fCNL [A机器IP或省略]:[A机器端口]:[B机器的IP]:[B机器端口] [登陆B机器的用户名@B机器的IP] 按照第3那里输入的指令,这里的B机器的端口和上面的B机器的端口是一致的,端口1234的也是B机器的。 ssh -fCNL *:1234:localhost:7280 localhost 检验是否已经启动了可以使用ps aux | grep ssh指令来查看: 在此1234端口为本地转发端口,负责和外网进行通信,并将数据转发的7280这个端口,实现了可以从其他机器访问的功能。同时,*号表示可以接受任何IP的访问。 5. 展现奇迹的时候到了 至此我们都配置好了AB机器,那么我们就可以从一部外网的电脑登陆到内网里面去啦。鉴于我目前的电脑在内网,而服务器都是外网的(也就是配置的B机器),所以可以通过B机器连接到我内网的A中,具体指令为: ssh -p1234 gdut728@123.123.123.123 在此-p参数为指定登陆的IP,我们在上面指定了1234端口为转发端口,故用1234端口登陆,然后gdut728是内网A机器的用户名,123.123.123.123为外网B机器的IP地址。 6. 这种反向代理的方式是不稳定的 不幸的是这种ssh反向链接会因为超时而关闭,如果关闭了那从外网连通内网的通道就无法维持了,为此我们需要另外的方法来提供稳定的ssh反向代理隧道。 6.1 ssh每次重连都需要键入密码,故在此首先设置免密码登陆到内网 在内网的机器A上面执行: ssh-copy-id 内网用户名@外网IP -p指定转发的端口 按照之前我设定的端口,这个指令就是如下 ssh-copy-id gdut728@123.123.123.123 -p1234 那以后这台内网的A机器ssh登陆我外网的B机器就可以免密码登陆啦~检验是否已经可以使用免密码登陆可以使用如下指令来检验: ssh root@123.123.123.123 6.2 用autossh建立稳定隧道 centos7上没有默认安装autossh的,所以使用一下命令安装 yum install autossh 来看看具体的autossh的指令为 autossh -M 7281 -fCNR 7280:localhost:22 root@123.123.123.123 autossh的参数与ssh的参数是一致的,但是不同的是,在隧道断开的时候,autossh会自动重新连接而ssh不会。另外不同的是我们需要指出的-M参数,这个参数指定一个端口,这个端口是外网的B机器用来接收内网A机器的信息,如果隧道不正常而返回给A机器让他实现重新连接。 7. 最后配置在Linux上配置开机自动启动autossh,免去了重启Linux后要自己启动的autossh的麻烦 输入:...

赞(0)adminadmin阅读(1682)去评论
学派吧SVN+Apache+IF.svnadmin支持https实现web管理SVN -linux教程-

学派吧SVN+Apache+IF.svnadmin支持https实现web管理SVN -linux教程

阅读目录 1. 介绍 2. 软件准备 3. 建立SVN Server仓库 4. 配置安装PHP&IF.SVNadmin 5. 启动服务 1.介绍 公司最近想把Windows server平台的SVN迁移到Linux平台;这边经过测试成功,所以写个随笔记录一下 今天写的是CentOS7上搭建基于Apache,http访问的SVN Server;和IF.svnadmin实现web后台可视化管理SVN iF.SVNAdmin iF.SVNAdmin应用程序是您的Subversion授权文件的基于Web的GUI。它基于PHP 5.3,需要安装一个Web服务器(Apache)。该应用程序不需要数据库后端或任何类似的,它完全基于Subversion授权和用户认证文件。(+包含用户和组的LDAP支持) 2. 软件准备 安装相关软件包 安装过程如下:1.安装apache [root@localhost ~]# yum install httpd -y2.安装svn服务器(其中,mod_dav_svn是apache服务器访问svn的一个模块) [root@localhost ~]# yum install mod_dav_svn subversion -y3.安装完成后可以通过如下命令查看是否安装成功 [root@localhost ~]# httpd -version[root@localhost ~]# svnserve --version [root@localhost ~]# ls /etc/httpd/modules/ | grep svnmod_authz_svn.so mod_dav_svn.so 3.在apache下配置svn [root@localhost ~]# vim /etc/httpd/conf.d/subversion.conf LoadModule dav_svn_module modules/mod_dav_svn.so LoadModule authz_svn_module modules/mod_authz_svn.so <Location /svn> DAV svn SVNParentPath /var/www/svn #svn的根目录SSLRequireSSL #SSL访问权限 AuthType Basic #Basic认证方式 AuthName "Authorization SVN" #认证时显示的信息 AuthUserFile /var/www/svn/passwd #用户文件&密码 AuthzSVNAccessFile /var/www/svn/authz #访问权限控制文件 Require valid-user #要求真实用户,不能匿名 </Location> 3. 建立SVN Server仓库 通过如下命令建立svn仓库 其中/var/www/svn是准备放仓库的目录,这个目录可以放置多个代码仓库 [root@localhost ~]# mkdir /var/www/svn [root@localhost ~]# svnadmin create /var/www/svn/sungeek [root@localhost ~]# ls /var/www/svn/sungeek ---> conf db format hooks locks README.txt [root@localhost ~]# chown -R apache.apache /var/www/svn 创建用户文件passwd和权限控制文件authz...

赞(0)adminadmin阅读(2087)去评论
学派吧-在Linux环境下g++编译GDAL动态库的操作方法-linux教程-

学派吧-在Linux环境下g++编译GDAL动态库的操作方法-linux教程

学派吧-下面小编就为大家带来一篇Linux环境g++编译GDAL动态库操作方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧 一、编译步骤 解压下载的GDAL源程序,并在命令行中切换到解压目录。 tar -xzvf gdal-2.1.3.tar.gz cd gdal-2.1.3 GDAL可通过configure来实现一些自定义配置,可通过./configure –h命令来查看。–prefix=path表示设置GDAL的make install后的build目录,里面有生成的头文件和动态库。输入如下命令: ./configure --prefix=/root/Test/gdalbuild 这时可以发现目录中新生成了GDALmake.opt文件,该文件被包含在GNUmakefile中进行编译。输入命令: make make install 编译完成后,生成的动态库文件就在设置的目录下。Include目录下存放着头文件,lib目录存放动态库文件,bin目录存放可执行文件如gdalinfo。 二、注意说明 1)注意这里是生成在自己设置目录而不是默认目录下,调用的时候需要设置环境变量或者拷贝到系统的lib目录,或者不用设置—prefix参数编译。 2)configure命令还可以用来设置debug版本或者release版本,只需要在后面添加–enable-debug参数就可以控制。默认情况下是关闭的。 --enable-debug enable debugging (disabled by default) 但我发现GDAL这个说明似乎有问题。我分别编译了带这个参数和不带这个参数两个版本: 带参数–enable-debug: 不带参数–enable-debug: 可以看到按照说明的release版本反而比debug版本体积大。一般而言,release版本总比debug版本信息小一点,而按照这篇文章《Linux下查看.so和可执行文件是否debug编译》进行检查是否debug编译,发现两者都是存在debug信息的,release版本比debug版本debug信息少一条: 这样到底哪个是debug版本反而弄不清楚了,只有留待以后研究了。 以上就是在Linux环境下g++编译GDAL动态库的操作方法的详细内容,更多请关注学派吧其它相关文章!

赞(0)adminadmin阅读(1468)去评论

更好的服务器推荐选择

本站主要用于阿里云、腾讯云、华为云服务器活动的推荐及优惠购买方式、并搜集服务器运维的日常解决方案!

联系我们联系我们

登录

找回密码

注册