分类 Linux 下的文章

Linux环境下Shell脚本中$$,$#,$?的含义?

Linux环境下Shell脚本中$$,$#,$?的含义:

$0 这个程式的执行名字
$n 这个程式的第n个参数值,n=1..9
$* 这个程式的所有参数,此选项参数可超过9个。
$# 这个程式的参数个数
$$ 这个程式的PID(脚本运行的当前进程ID号)
$! 执行上一个背景指令的PID(后台运行的最后一个进程的进程ID号)
$? 执行上一个指令的返回值 (显示最后命令的退出状态。0表示没有错误,其他任何值表明有错误)
$- 显示shell使用的当前选项,与set命令功能相同
$@ 跟$*类似,但是可以当作数组用

多试下就明白了

nginx开启SSI模块支持shtml/shtm功能

SSI 是 Server Side Include 的首字母缩略词。包含有嵌入式服务器方包含命令的 HTML 文本。在被传送给浏览器之前,服务器会对 SHTML 文档进行完全地读取、分析以及修改。

在 Nginx 中,开启 SSI 支持非常简单,通过向 nginx.conf 中添加几行设置命令即可实现。

将下面的3行代码添加到 nginx.conf 文件的 http{} 段中,以开启 SSI 模块的支持:

ssi on;
ssi_silent_errors on;
ssi_types text/shtml;

放第一个server段的前面

也可以直接在server段里加上

location ~ .*\.(shtm|shtml)?$ {
    ssi on;
    ssi_silent_errors on;
    ssi_types text/shtml;
}

需要注意:
<!–#include file="文件名称"–>
<!–#include virtual="文件名称"–>
file 文件名是一个相对路径,该路径相对于使用 #include 指令的文档所在的目录。
被包含文件可以在同一级目录或其子目录中,但不能在上一级目录中。

如表示当前目录下的的nav_head.htm文档,则为 file=”nav_head.htm”。
virtual 文件名是 Web 站点上的虚拟目录的完整路径。

如表示相对于服务器文档根目录下hoyi目录下的nav_head.htm文件;则为 virtual=”/hoyi/nav_head.htm”

Vi/Vim如何添加或删除多行注释

  • 在使用Vi/Vim编辑器对代码或者配置文件编辑的时候,我们经常会需要对多行添加注释或者删除多行的注释。
  1. 进入vi/vim编辑器,按CTRL+V进入可视化模式(VISUAL BLOCK)

  2. 移动光标上移或者下移,选中多行的开头,如下图所示

  3. 选择完毕后,按大写的的I键,此时下方会提示进入“insert”模式,输入你要插入的注释符,例如#

  4. 最后按ESC键,你就会发现多行代码已经被注释了

  5. 删除多行注释的方法,同样 Ctrl+v 进入列选择模式,移到光标把注释符选中,按下d,注释就被删除了。

  • 替换命令
    使用替换命令
    :% s/^/#/g 来在全部内容的行首添加 # 号注释
    :1,10 s/^/#/g 在1~10 行首添加 # 号注释

MySQL数据库中创建函数报“ERROR 1418 ”错误,不能创建函数的解决方法

我们在使用MySQL数据库开发项目的时候,有时MySQL系统自带的函数不能完全满足我们开发的需要,解决方法是自己创建函数,可以有可能在你创建函数的过程事会报出Error 1418错误

对于报这种错误的详细信息如所所示

ERROR 1418 (HY000): This function has none of DETERMINISTIC, NO SQL, or READS SQL DATA in its declaration and binary logging is enabled (you *might* want to use the less safe log_bin_trust_function_creators variable)
ERROR 1418 (HY000): This function has none of DETERMINISTIC, NO SQL, or READS SQL DATA in its declaration and binary logging is enabled (you *might* want to use the less safe log_bin_trust_function_creators variable)

MySQL函数不能创建,是未开启功能。

解决方法:MySQL函数不能创建,是未开启功能:

mysql> show variables like '%func%';
+---------------------------------+-------+
| Variable_name | Value |
+---------------------------------+-------+
| log_bin_trust_function_creators | OFF |
+---------------------------------+-------+
1 row in set (0.00 sec)

mysql> set global log_bin_trust_function_creators=1;
Query OK, 0 rows affected (0.00 sec)

mysql> show variables like '%func%';
+---------------------------------+-------+
| Variable_name                            | Value   |
+---------------------------------+-------+
| log_bin_trust_function_creators  | ON |
+---------------------------------+-------+
1 row in set (0.00 sec)mysql>

如果上方法不能成功解决mysql中的ERROR 1418错误,那还得请你使用下面方法试试:

第一步: mysql> SET GLOBAL log_bin_trust_function_creators = 1;

第二步: 系统启动时 --log-bin-trust-function-creators=1

第三步: 在my.ini(Linux下为my.conf)文件中 [mysqld] 标记后加一行内容为 log-bin-trust-function-creators=1

XEN、VMware、OpenVZ的概念都是什么?区别是什么?

xen、vmware、openVZ三大vps主机系统
vmware player和vmware Server的东西,没有什么太大的新意,
主要是讲了linux下vmware的安装和使用的方法,
vmware由于同时有windows版,所以使用的人比较多。

目前的国内外vps主机提供商所提供的主机大多是基于xen、vmware、openVZ这三大虚拟软件,
国内的提供商大多采用vmware,而美国等国外提供商大多采用xen和openVZ这两款软件。

xen,已经开始在集成到主要的linux发行版。它在性能上也表现很相当不错,
再加上是open source(开源软件),已经成为了linux上虚拟机的一个主角。

OpenVZ是SWsoft公司的open source版,同公司还有Virtuozzo的商用版, 它的最大的特别在于性能出色。

下面就重点分析一下OpenVZ和Xen的区别。

Xen由dom0和domU组成,Dom0是虚拟出CPU, IO总路线等资源,供工作于DomU上的不同的kernel运行。

这样的好处是,

1.对可以运行的操作系统限制较少。

2.domU上系统的crash不会影响其他的dom. 当然Dom0发生故障时还是会有问题。

坏处:

1.由于需要虚拟CPU,BUS等物理资源,开销会更大点。

OpenVZ使用了完全不同的方式,它所创造的虚拟机都使用工作在同一个kernel下。

这样的好处是

1。性能好。

坏处:

1。任何一个kernel bug都会危及所有的虚拟机。 因kernel bug所crash的可能性大大增加。

2。他需要对内核作很多的改动。

最近,还有一个趋势就是,hardware虚拟,现在的CPU带有多个核心,Intel和AMD都开始发布基于CPU的虚拟化。
这一些都也可能成为虚拟技术的一个新的热点。

参考资料:站长站