背景:我的T60P机器是老了还是啥的,开机假死发生多次,强制关机后重启正常,怀疑过固态硬盘,怀疑过风扇FanError,换了个风扇依旧,于是查了下开机日志,发现大量的acpi的警告:警告   2015/10/27 星期二 23:49:44  ACPI  15  无。。。。。于是,解决办法如下:
系统城的小编这里要跟大家分享的是关于如何在BIOS中关闭ACPI的方法,ACPI表示高级配置和接口(Advanced Configuration and Power Management Interface),帮助操作系统控制划拨给每一件与计算机相连的设备的电量,有了ACPI,操作系统就可以把不同的外设关闭。但是针对有些用户在安装系统的时候会出现假死的现象,因此有大神建议先关闭ACPI即可解决问题!

电脑如何进入BIOS设置

win7系统如何关闭ACPI:

    开机按del键,找到Advanced Configuration and Power Interface即可关闭。
win7系统如何关闭ACPI
    开机后如发现设备栏中有黄色惊叹号,未知设备,可以打开系统光盘,把power manegement目录下的setup.exe执行一下,惊叹号就没有了!

来自:http://www.xitongcheng.com/jiaocheng/win7_article_1687.html
====================================================================================
通过----windows系统日志----查看开关机时间:
(1)
在“开始”菜单的“运行”中输入“eventvwr.msc”,打开事件查看器,在左侧窗口中选择Windows日志->“系统”,从右侧系统事件中查找事件ID为6005、6006的事件
事件ID:6005表示事件日志服务已启动,即开机
事件ID:6006表示关机。它们对应的时间就分别是开机时间和关机时间
简单点
还你可以使用“筛选”使内容简洁。在事件查看器的“查看”菜单中选择“筛选”选项,在属性对话框中选择“筛选器”选项卡,并在其中勾选“信息”、“警告”、“错误”三项,在“事件来源”下拉列表中选择“eventlog”,单击“确定”按钮后,系统事件中的内容就少了很多,可以轻易找到最近的开关机时间。
(2)
在“开始”菜单中的“运行”中输入“C:\WINDOWS\schedlgu.txt”,在打开的schedlgu.txt文件中有“任务计划程序服务”已启动于和“任务计划程序服务”已退出于的时间,分别对应着开机和关机时间

来自:http://blog.sina.com.cn/s/blog_518b64290100fewh.html


错误  2015/10/28 星期三 0:22:28  SharedAccess_NAT  34001  无,
看看windows firewall服务是不是被禁用了,原来 是NOD32会接管Windows系统自带的防火墙。
http://bbs.kafan.cn/thread-1691369-1-1.html
背景:在写代码程序里写文件时不小心出现了一个带横线的文件,如下:
[root@iZ25dcp92ckZ temp]# ls
-000                                      84b1052c-ebc5-11e4-bf9b-b9856d949d58-002.mp4
[root@iZ25dcp92ckZ temp]# ll -i
总用量 58140
1211764 -rw-r--r-- 1 48 root        0 10月 23 17:14 -000
1187168 -rw-r--r-- 1 48 root 11904973 10月 23 17:14 84b1052c-ebc5-11e4-bf9b-b9856d949d58-002.mp4
干掉它:
find . -inum 1211764 -exec rm {} \;
————————————————————————————————————————————
linux下怎样删除以横线开关的文件:
一些客户用FTP上传了一些以横线开关的文件,然后需要删除或改名时都不能操作.所以很苦恼.
在删除时报以下错误:

以下是解决方法:
1.首先以ll -i 查看下文件的inode值.

2.有以下命令删除或改名此类文件:
find 命令
  使用 UNIX find 命令,您可以完成使用 ls 命令所开始的工作。对于要进行操作的文件,您已经知道了它们的索引编号,那么就可以开始进行相应的操作了!
  要删除看似无名的文件,您只需要使用 find 和 -inum 开关对索引编号和文件进行定位。然后,在找到该文件之后,使用 find 和 -exec 开关删除该文件:
  
# find . -inum 393228 -exec rm {} \;
  要对该文件进行重命名或删除,可以使用 mv 或 rm:
删除文件:



# find . -inum 393228 -exec mv {} passwd.txt \;
重命名文件:



问题解决.

来自:http://blog.chinaunix.net/uid-23683795-id-2391090.html
背景:提高了性能,任何事情都可以辩证的看,稳定性于鲁棒性,光的波粒二象性,凡事都有两面性,如戴眼镜虽然可以装丝文,但是雨中漫步的时候容易撞电线杆;抽烟可以让身上有女生喜欢的淡淡烟草味,但是会危害周围人的健康;醉酒虽然可以让人精神愉悦,但是会说出真话,这些都是我的亲身体验.......写不下去了。

wintiongXX - sng<wintiXX@gmail.com>  14:39:09
php里哪个函数,是可以在php执行过程中直接响应nginx,但是让php继续执行?
cody(2501385XX)  14:40:44
        fastcgi_finish_request();
wintiongXX - sng<wintiXX@gmail.com>  14:41:22
我就记得有这个函数,一时想不起来了
@cody
X哥chen(X哥)<blXXX.c@163.com>  14:45:09
用fastcgi_finish_request要注意一下,
如果fastcgi_finish_request"之后", 到整个程序完成的时间还很久或有其他的阻塞调用,
当前进程是无法处理请求的, 可能导致各种问题
wintiongXX - sng<wintiXX@gmail.com>  14:46:23
这个知道的,其实总体而言进程耗时没变化,只是有些东西没必要让用户等你
erikYXXX-TEG(744366XXX)  14:48:32
使用这个函数不能使用file存储session(使用其他存储也需要关掉session 锁)。不然用户A第一次持有session访问,如果后续操作有耗时操作,用户的session会被锁住,导致后续访问卡住。
问苍天个猫(13427XXX)  15:01:35
可以提前session_write_close啊
erikYXXX-TEG(744366XXX)  15:01:59
也是可以的。
——————扯淡开始———————
JackX-回忆未来有甚用(372647XXX)  16:19:27
请问各位弟兄们,这两个函数放在一块有啥区别:
1.PHP ignore_user_abort() 函数, ignore_user_abort(true); php关闭浏览器还能运行函数。
2.        fastcgi_finish_request();
都解决了啥么子问题???
JackX-回忆未来有甚用(372647XXX)  16:24:06
我问的问题就没一个人接一个?还是认为我不是搞PHPer的啊
问题太肤浅?
allendai<snowheart.dai@gmail.com>  16:24:56
没用过。。
JackX-回忆未来有甚用(372647XXX)  16:27:31
我只是好奇,哈哈~
你说这些鸡肋功能开发出来有毛用啊,还好天峰说没有之一,哈哈。
Ran-韩最好语言(128112XX)  16:29:13
因为PHP设计之初只有 请求开始到请求结束 这段生命周期,后面的它控制不了。各种函数的出现就是为了弥补这个缺陷。
JackX-回忆未来有甚用(372647XXX)  16:29:16
PHP ignore_user_abort() 函数,我用来做一些导表由PHP从A到B做下逻辑导入数据库,浏览器上访问下容易超时,于是用到。
至于这个: fastcgi_finish_request(); 我也是听x哥在说,于是问下,都用来干嘛子?上传视频后-》转码->入库->推前台,第二三四都可以连接起来???
Ran-韩最好语言(128112XX)  16:29:28
使用消息队列异步处理才是正途。
erikYXXX-TEG(744366XXX)  16:29:54
php session lock主要是各个session促出模块实现自己实现的锁。默认的session 存储是文件,实现是在打开之前flock session文件。如果选择memcached存储session,锁是在memcache扩展里面实现的。
如果自己实现SessionHandler接口存储,可以选择不实现锁。
fastcgi_finish_request 可以提前把结果返回给nginx,之后脚本还可以保留上下文执行一些任务,可以算是伪异步。最好还是使用MQ来异步处理任务。
allendai<snowheart.dai@gmail.com>  16:30:06
……用浏览器调用导入程序
这就是你的不专业了
JackX-回忆未来有甚用(372647XXX)  16:31:05
我觉得也是,所以我觉得兄弟们都是专业的,
可为何发明这个鸡肋功能,有点玩的感觉哟。

结论:
X哥chen(X哥)<blXXX.c@163.com>  16:38:59
+1
异步化才是正途
背景:有时在做一些Nginx的Proxy时,如从80端口请求后代码到其它web服务器如tomcat的8080端口,需要一些主备的思想,也就是万一主服务器挂了怎么办?用备机了,这块Nginx支持这样一个功能的。
一)nginx从前端域名支向代理并负载均衡代理到其他ip并配置了域名的机器,这儿得有proxy_set_header Host $host;相当于以域名访问IP:



经测试,这个Nginx的七层代理感觉还是比Lvs差一点,压力测试时这块儿还是有点卡:


二)如nginx暴露出域名反向代理到一台tomcat的以IP指向的8080端口:

——————————————————————————————————————————


只要在希望成为后备的服务器ip后面多添加一个backup参数,这台服务器就会成为备份服务器。
在平时不使用,nginx不会给它转发任何请求。只有当其他节点全部无法连接的时候,nginx才会启用这个节点。
一旦有可用的节点恢复服务,该节点则不再使用,又进入后备状态。

可以两台机子互为热备,平时各自负责各自的服务。在做上线更新的时候,关闭一台服务器的tomcat后,nginx自动把流量切换到另外一台服务的后备机子上,从而实现无痛更新,保持服务的持续性,提高服务的可靠性。

关于这个参数的官档说明:
http://wiki.nginx.org/NginxHttpUpstreamModule
backup - (0.6.7 or later) only uses this server if the non-backup servers are all down or busy (cannot be used with the directive ip_hash)

摘自:http://hillside.iteye.com/blog/703281

http://chattool.sinaapp.com/?p=1063
最近找到一篇很好的文章将linux多线程函数pthread_cond_wait,是我茅塞顿开,豁然开朗,决定转载过来,以便经常复习记忆。

条件变量的结构为pthread_cond_t,函数pthread_cond_init()被用来初始化一个条件变量。它的原型为:
extern int pthread_cond_init __P ((pthread_cond_t *__cond,__const pthread_condattr_t *__cond_attr));
其中cond是一个指向结构pthread_cond_t的指针,cond_attr是一个指向结构pthread_condattr_t的指针。结构 pthread_condattr_t是条件变量的属性结构,和互斥锁一样我们可以用它来设置条件变量是进程内可用还是进程间可用,默认值是 PTHREAD_ PROCESS_PRIVATE,即此条件变量被同一进程内的各个线程使用。注意初始化条件变量只有未被使用时才能重新初始化或被释放。释放一个条件变量的函数为pthread_cond_destroy(pthread_cond_t cond)。 
也可以静态的初始化条件变量
pthread_cond_t my_condition = PTHREAD_COND_INITIALIZER;
函数pthread_cond_wait()使线程阻塞在一个条件变量上。它的函数原型为:
extern int pthread_cond_wait __P ((pthread_cond_t *__cond,pthread_mutex_t *__mutex));
调用这个函数时,线程解开mutex指向的锁并被条件变量cond阻塞。线程可以被函数pthread_cond_signal和函数 pthread_cond_broadcast唤醒线程被唤醒后,它将重新检查判断条件是否满足,如果还不满足,一般说来线程应该仍阻塞在这里,被等待被下一次唤醒。这个过程一般用while语句实现。
通过下面的程序来理解:
__________________华丽的CODE分割线_________________________
pthreadCondWait.c


___________________至关重要的绚烂的结果分割线_________________
[root@iZ25dcp92ckZ testdemo]# vi pthreadCondWait.c          
[root@iZ25dcp92ckZ testdemo]# gcc pthreadCondWait.c -lpthread -o pthreadCondWaitStudy
[root@iZ25dcp92ckZ testdemo]# ./pthreadCondWaitStudy
thead1:1
Up Unlock Mutex
thead1:2
Up Unlock Mutex
Up Unlock Mutex
thread2:3
Down Ulock Mutex
thread2:3
Down Ulock Mutex
thead1:4
Up Unlock Mutex
thead1:5
Up Unlock Mutex
Up Unlock Mutex
thread2:6
Down Ulock Mutex
thread2:6
Down Ulock Mutex
thead1:7
Up Unlock Mutex
thead1:8
Up Unlock Mutex
Up Unlock Mutex
thread2:9
Down Ulock Mutex

_________________HOW IT WORKS________

i不是三的倍数的时候.
thread2条件变量阻塞,释放Mutex
thread1加锁,打印thread1:i,释放锁,打印"Up Unlock Mutex"
i为3的倍数的时候,
thread1,加锁,条件变量通知,唤醒条件变量阻塞线程,打印"Up Unlock Mutex"
thread2,被唤醒,加锁,打印"thread2:i",释放锁,打印"Down Ulock Mutex"

    所以说函数pthread_cond_wait()调用时,不仅对条件变量起作用,还对互斥锁有作用!

++++++++++++++++唯美的好书推荐线++++++++++++
"Beiginning Linux Programming" by Neil Matthrew & Richard Stones
You can choose the English version or Chinese version, but I recommend the English one. Maybe it' easier to understand what the authers say than the Chinese one ,  even if you're Chinese.

原文地址:http://blogold.chinaunix.net/u1/53448/showart_431857.html
背景:Raspberry Pi下的mysql启动出现如下:
151017  8:33:10 [Note] Server socket created on IP: '127.0.0.1'.
151017  8:33:10 [ERROR] Can't start server: Bind on TCP/IP port: Cannot assign requested address
151017  8:33:10 [ERROR] Do you already have another mysqld server running on port: 3306 ?


注意关键词 Bind
  这时,可以打开/etc/mysql/my.cnf
  ...
  bind-address  = 192.168.141.25
  ...
  如果你也是这么写的,那么把它改成
  bind-address  = 0.0.0.0
  然后重启即可
  另外,mysql在启动时进行了端口的bind,那么当ip更换时,请注意这些细节

vi /etc/mysql/my.cnf

#bind-address           = 127.0.0.1
bind-address            = 0.0.0.0

来自:http://www.educity.cn/wenda/403390.html

实际情况是因为自己把lo给干掉了,没有127.0.0.1这个端口:
vi /etc/network/interfaces
auto lo
iface lo inet loopback
....

同理,apache2也是一样的道理,因为这个软的IP,没有了,于是也没法访问,得特别注意:
vi /etc/network/interfaces
背景:有时一些小的网站,比如个人博客需要每天备份数据,鉴于此,得自动化不是,这儿就是一个简单可行的好方法,配置上后就不用管了。更牛B点就是主辅助同步,在辅库上运行下面的脚本更发妥当。
1)备份权限列表需要哪些?
1.Select  读取
2.SHOW DATABASES 允许访问完整的数据库列表
4. LOCK TABLES 允许锁定表
5.RELOAD 允许载入和刷新服务器缓存
以上几点是必须的.请注意
主辅助是不复制角色表的。

2)实践添加备份用户如下:
grant SELECT, RELOAD, SHOW DATABASES, LOCK TABLES on *.* to 'back'@'localhost' identified by "************"

3)实现下面自动备份脚本:
cat backUpJustWinDatas.sh


4) 定时生成定时删除命令:
1)定时生成:
0 0 * * * /bin/bash /usr/local/scripts/backUpJustWinDatas.sh
2)删除旧的:
0 1 * * * find /data/backup/db.JustWin.com -mtime +7 -exec rm -R {} \;

最后,参考实践来源自:http://www.jb51.net/article/49099.htm
http://blog.163.com/o5655@126/blog/static/166742834201181393837133/
背景:在外面上面放一个phpmyadmin的发现阿里的云盾发现有人居然来试着访问,网上不安全。
攻击IP                攻击时间                      攻击URL                                                                                                                攻击类型  处理结果
199.191.57.182  2015-10-16 05:29:33  101.20*.1*.**/phpmyadmin/scripts/setup.php Match1:/phpmyadmin/scripts/setup.php  其他  已拦截
——————————————————————————————————————————————————————————————————————
修改:config.inc.php
在第一行加入
$ip_prefix = '192.168.121.';
if (substr($_SERVER['REMOTE_ADDR'], 0, strlen($ip_prefix)) != $ip_prefix ) die('illegal access error');
ip可以设置成你自己电脑的ip。如果是内网建议直接设置成自己的ip地址取代ip地址段。这样的话可以防止其它用户在内网中访问。如果是公网ip限制,直接使用即可。
只是简单的限定,没有太大要求只是暂时限定,可以使用这种方式。临时性的限制用户去访问。



当然,也可以用foreach写成一个数组来处理..........

摘自:http://www.jb51.net/article/34509.htm



phpMyAdmin 因PHP的session目录及自身目录权限引发错误解决:
问题一:phpMyAdmin -Cannot start session without errors, please check errors given in your PHP and/or webserver log file and configure your PHP installation properly.



问题:打开phpmyadmin出现如下错误:Cannot start session without errors, please check errors given in your PHP and/or webserver log file and configure your PHP installation properly.
解决办法如下:
vim /etc/php5/apache2/php.ini
查找session.save_path ,将session.save_path=/var/lib/php5这一句的注释符号去掉。
如还不能正常工作,将session.auto_start的值改为1(启动),默认是0(禁用)
这个错误一般是由于session文件的存储路径不可写造成的,在linux下一般是路径的权限问题。在windows下面session.save_path一定要设置到一个可以读写的路径,如 D:/tmp 等。
摘自:http://blog.sina.com.cn/s/blog_62cd41130100uhpv.html
=====================================================================================
问题二:phpmyadmin错误Wrong permissions on configuration file, should not be world writable!


登录phpmyadmin,发现提示Wrong permissions on configuration file, should not be world writable!,提示配置文件必须不可写,这里改成755就OK了.
用以下命令 chmod -R 755 /home/wwwroot/phpmyadmin
摘自:http://www.111cn.net/phper/31/59722.htm
背景:这个linux用户登录进行相关环境变量的设置和下面这些全局和用户之前的关系,值得大致有一个理解,特别是环境变量,有一些程序运行的环镜参数息息相关,还有类似如对secureCRT标签的设置(为什么就登录失效没有触发呢,直接运行又OK等问题有疑惑,排查问题困难),/etc/bashrc /etc/sysconfig/bash-prompt-xterm 里设置secureCRT标签,怎么登录就没有变呢,而是直接运行source /etc/bashrc即可生效(运行source XXX之前,先运行bash,即:1)bash 2)source XXX):/etc/bashrc  里面包含/etc/sysconfig/bash-prompt-xterm 文件就能设置了呢,/etc/bashrc: 为每一个运行bash shell的用户执行此文件.当bash shell被打开时,该文件被读取。此中必然有蹊跷,设置secureCRT 的标签见:http://jackxiang.com/post/6773/ ,是阿里云给修改了这个:/etc/bashrc 里加入新变量:if [ -z "$PROMPT_COMMAND" ]; then ,它不为空,没有运行这个/etc/sysconfig/bash-prompt-xterm 文件,解决办法就是:PROMPT_COMMAND="";强制清空得了,重新运行source  /etc/bashrc就Ok了 。

执行顺序如下:
/etc/bashrc ==>(PROMPT_COMMAND=/etc/sysconfig/bash-prompt-xterm)=》 /etc/profile/etc/profile.d/ [2.for i in /etc/profile.d/*.sh ; do]  ==>.bash_profile =(包含:. ~/.bashrc)=. ~/.bashrc。(首先启动 /etc/profile 文件,然后再启动用户目录下的 ~/.bash_profile),摘自:http://blog.51cto.com/xoyabc/1658135

/etc/profile:此文件为系统的每个用户设置环境信息,当用户第一次登录时,该文件被执行.
并从/etc/profile.d目录的配置文件中搜集shell的设置.

/etc/bashrc:为每一个运行bash shell的用户执行此文件.当bash shell被打开时,该文件被读取.

~/.bash_profile:每个用户都可使用该文件输入专用于自己使用的shell信息,当用户登录时,该
文件仅仅执行一次!默认情况下,他设置一些环境变量,执行用户的.bashrc文件.

~/.bashrc:该文件包含专用于你的bash shell的bash信息,当登录时以及每次打开新的shell时,该
该文件被读取.

~/.bash_logout:当每次退出系统(退出bash shell)时,执行该文件.

另外,/etc/profile中设定的变量(全局)的可以作用于任何用户,而~/.bashrc等中设定的变量(局部)只能继承/etc/profile中的变量,他们是"父子"关系.

~/.bash_profile 是交互式、login 方式进入 bash 运行的

~/.bashrc 是交互式 non-login 方式进入 bash 运行的

通常二者设置大致相同,所以通常前者会调用后者。



bash的几个初始化文件 - [Ubuntu]



(1)/etc/profile
全局(公有)配置,不管是哪个用户,登录时都会读取该文件。

(2)/ect/bashrc
Ubuntu没有此文件,与之对应的是/ect/bash.bashrc
它也是全局(公有)的
bash执行时,不管是何种方式,都会读取此文件。

(3)~/.profile
若bash是以login方式执行时,读取~/.bash_profile,若它不存在,则读取~/.bash_login,若前两者不存在,读取~/.profile。
另外,图形模式登录时,此文件将被读取,即使存在~/.bash_profile和~/.bash_login。

(4)~/.bash_login
若bash是以login方式执行时,读取~/.bash_profile,若它不存在,则读取~/.bash_login,若前两者不存在,读取~/.profile。

(5)~/.bash_profile
Unbutu默认没有此文件,可新建。
只有bash是以login形式执行时,才会读取此文件。通常该配置文件还会配置成去读取~/.bashrc。

(6)~/.bashrc
当bash是以non-login形式执行时,读取此文件。若是以login形式执行,则不会读取此文件。

(7)~/.bash_logout
注销时,且是longin形式,此文件才会读取。也就是说,在文本模式注销时,此文件会被读取,图形模式注销时,此文件不会被读取。

下面是在本机的几个例子:
1. 图形模式登录时,顺序读取:/etc/profile和~/.profile
2. 图形模式登录后,打开终端时,顺序读取:/etc/bash.bashrc和~/.bashrc
3. 文本模式登录时,顺序读取:/etc/bash.bashrc,/etc/profile和~/.bash_profile
4. 从其它用户su到该用户,则分两种情况:
    (1)如果带-l参数(或-参数,--login参数),如:su -l username,则bash是lonin的,它将顺序读取以下配置文件:/etc/bash.bashrc,/etc/profile和~/.bash_profile。
    (2)如果没有带-l参数,则bash是non-login的,它将顺序读取:/etc/bash.bashrc和~/.bashrc
5. 注销时,或退出su登录的用户,如果是longin方式,那么bash会读取:~/.bash_logout
6. 执行自定义的shell文件时,若使用“bash -l a.sh”的方式,则bash会读取行:/etc/profile和~/.bash_profile,若使用其它方式,如:bash a.sh, ./a.sh,sh a.sh(这个不属于bash shell),则不会读取上面的任何文件。
7. 上面的例子凡是读取到~/.bash_profile的,若该文件不存在,则读取~/.bash_login,若前两者不存在,读取~/.profile。







linux中profile与bashrc的区别
Ubuntu 的相关目录下
/ect/ /root /home/myuser
profile .profile .profile
bash.bashrc .bashrc .bashrc
profile.d

Fedora的相关目录
/ect/ /root /home/myuser
profile      profile
bashrc   .bashrc bashrc
profile.d                     profile.d

说明:myuser 是你添加创建的用户
在网上找了半天也不能包括所有的,所以只能比较个大概。



bashrc与profile的区别

要搞清bashrc与profile的区别,首先要弄明白什么是交互式shell和非交互式shell,什么是login shell 和non-login shell。

交互式模式就是shell等待你的输入,并且执行你提交的命令。这种模式被称作交互式是因为shell与用户进行交互。这种模式也是大多数用户非常熟悉的:登录、执行一些命令、签退。当你签退后,shell也终止了。 shell也可以运行在另外一种模式:非交互式模式。在这种模式下,shell不与你进行交互,而是读取存放在文件中的命令,并且执行它们。当它读到文件的结尾,shell也就终止了。

bashrc与profile都用于保存用户的环境信息,bashrc用于交互式non-loginshell,而profile用于交互式log


来自:http://blog.renren.com/share/224354794/8635033605
========================登录Linux时/etc/profile、~/.bash_profile等几个文件的执行过程  ========================
关于登录linux时,/etc/profile、~/.bash_profile等几个文件的执行过程。 在登录Linux时要执行文件的过程如下: 在刚登录Linux时,首先启动 /etc/profile 文件,然后再启动用户目录下的 ~/.bash_profile、 ~/.bash_login或 ~/.profile文件中的其中一个,执行的顺序为:~/.bash_profile、 ~/.bash_login、 ~/.profile。如果 ~/.bash_profile文件存在的话,一般还会执行 ~
关于登录linux时,/etc/profile、~/.bash_profile等几个文件的执行过程。

在登录Linux时要执行文件的过程如下:

在刚登录Linux时,首先启动 /etc/profile 文件,然后再启动用户目录下的 ~/.bash_profile、 ~/.bash_login或 ~/.profile文件中的其中一个,执行的顺序为:~/.bash_profile、 ~/.bash_login、 ~/.profile。如果 ~/.bash_profile文件存在的话,一般还会执行 ~/.bashrc文件。因为在 ~/.bash_profile文件中一般会有下面的代码:

if [ -f ~/.bashrc ] ; then

. ./bashrc

fi

~/.bashrc中,一般还会有以下代码:

if [ -f /etc/bashrc ] ; then

. /bashrc

fi

所以,~/.bashrc会调用 /etc/bashrc文件。最后,在退出shell时,还会执行 ~/.bash_logout文件。

执行顺序为:/etc/profile -> (~/.bash_profile | ~/.bash_login | ~/.profile) -> ~/.bashrc -> /etc/bashrc -> ~/.bash_logout

关于各个文件的作用域,在网上找到了以下说明:

(1)/etc/profile: 此文件为系统的每个用户设置环境信息,当用户第一次登录时,该文件被执行. 并从/etc/profile.d目录的配置文件中搜集shell的设置。

(2)/etc/bashrc: 为每一个运行bash shell的用户执行此文件.当bash shell被打开时,该文件被读取。

(3)~/.bash_profile: 每个用户都可使用该文件输入专用于自己使用的shell信息,当用户登录时,该文件仅仅执行一次!默认情况下,他设置一些环境变量,执行用户的.bashrc文件。

(4)~/.bashrc: 该文件包含专用于你的bash shell的bash信息,当登录时以及每次打开新的shell时,该该文件被读取。

(5)~/.bash_logout:当每次退出系统(退出bash shell)时,执行该文件. 另外,/etc/profile中设定的变量(全局)的可以作用于任何用户,而~/.bashrc等中设定的变量(局部)只能继承 /etc/profile中的变量,他们是"父子"关系。

(6)~/.bash_profile 是交互式、login 方式进入 bash 运行的~/.bashrc 是交互式 non-login 方式进入 bash 运行的通常二者设置大致相同,所以通常前者会调用后者。

在这里开始书写日记、心情 …

来自:http://blog.163.com/jianweicheng@126/blog/static/356732022008228559399/

里,如果xxx为true,后面的{}才被执行。{后,栈里为i开了4字节的单元(如果是32位机的话)。遇}时,这四个字节被弹出。






来自:http://www.kuqin.com/article/23candcplusplus/937677.html
对于phpmyadmin“无法载入 mcrypt 扩展,<br />请检查 PHP 配置”的问题,我记得前段时间还有午饭提问过。
自己很长一段时间之前就遇过这个问题,但是也不知道怎么解决的,记得是安装过两个RPM包就搞定。
对于这个问题,可以发现网上发问的可是N多呀,普遍都经受这个折腾。
现在在自己的LNMP下重新进行了安装,也出现这个问题。当我再次尝试安装
libmcrypt-2.5.7-3.el5.remi.i386.rpm
php-mcrypt-5.1.6-1.el5.i386.rpm
不过得不到解决,于是我选择通过源码包编译安装libmcrypt-2.5.7.tar.gz ,并且重新编译到PHP中去,最终解决了
该问题。
#tar zxvf  libmcrypt-2.5.7.tar.gz
#cd libmcrypt-2.5.7
#./configure --prefix=/usr/local/libmcrypt
#make && make install
重新编译php:
#./configure --prefix=/usr/local/php --with-mysql=/usr/local/mysql --enable-fastcgi --enable-fpm --enable-mbstring --with-mcrypt=/usr/local/libmcrypt/
这里顺便编译php的配置文件php.ini
extension=php_mbstring.dll  把这行前面的;去掉
然后重启mysql、php-fpm、nginx
重新登录phpmyadmin就不显示了。

————————————————————————————————————————————————————————
来自:http://bbs.51cto.com/thread-821175-1.html
背景:有时一次清空所有日志文件很有必要。

cat clearUpAllServersLog.sh
for i in `find /data/logs -name "*.log"`; do cat /dev/null >$i; done

更简单的写法:
for i in `find . -name "*.log*"`;do echo $i; done
for i in `find . -name "*.log"`;do echo $i; done
for i in `find . -name "*.log"`;do echo $i; done
for i in `find . -name "*.log"`;do :>$i; done

一般是>文件清空,但是前面贴着数字和:也可以
cat txt
2018年 03月 14日 星期三 14:03:56 CST
#seq 5> txt
seq: 缺少操作数
Try 'seq --help' for more information.

#seq 5 >txt
cat txt
1
2
3
4
5

因为没空来前面还是数字会意想不到的结果,规范使用最好前面空开.
>重定向是先清空文件,再执行命令写入,这里的seq 5因为5贴着,所以执行的是seq,所以会抛出命令帮助。
是清空再执行写入呢,喔,明白了 > 有两个动作。

#每天晚上凌晨零点清空各种服务生成日志
0 0 * * * /bin/bash /usr/local/scripts/clearUpAllServersLog.sh
————————————————————————————————————
1)在当前目录下,键入如下命令:
for i in `find . -name "*.log"`; do cat /dev/null >$i; done

2)执行完毕后,当前目录下的所有log日志文件就被清空了。
Linux:批量清空当前目录下的日志文件

3)再把shell命令解释一下:
find . -name "*.log"  ,就是在当前目录下查找后缀为log的文件。
cat /dev/null >$i       ,就是将每次找到的log文件清空。

参考:http://jingyan.baidu.com/article/acf728fd23a1e9f8e510a331.html

Hint: Some lines were ellipsized, use -l to show in full. systemctl status slapd  -l ,'journalctl -xn' for details. 看不清换行,先journalctl -xn > out.log,再vim看。
一)那个Service XXX start时,也是装入了内存活它的Service系统的,而用chkconfig -add memcached  就是装入这个Service系统,完全类似centos7 的systemctl daemon-reload,也就是说你改了/etc/init.d/memcached  如果不chkconfig -add memcached,service memcached start执行的还是旧的(尽管你替换了那个/etc/init.d/memcached文件), 同理/lib/systemd/system/memcached.service,也是一样的道理,修改后得 systemctl daemon-reload才会生效,直接运行systemctl start memcached会提示你systemctl daemon-reload,不让你运行,也就是说它会监控/etc/systemd/system/*.service外,发现它还会监控centos6的/etc/init.d/* 的修改。
二)在CentOS7里面,只有运行了service memcached start后,这个systemctl才行被注入,一上来就运行systemctl start memcached , 它是不认识这个memcached  的,再就是如果自己Kill掉,没有用 service memcached stop,这个sytemctl 也是不知道它关了,想用systemctl start memcached也无法启动的,因为systemctl 认为它还运行着呢,于是得用systemctl stop memcached 后,再运行systemctl start memcached,也就成功了,否则即使systemctl start memcached啥也不输出就退出了,但是那个进程还是没有启动,说白了,在CentOS7里面,那个启动和停止最好是经过service或systemctl,连service 也是被systemctl接管了的,都得向systemctl注册!!!,艹。


背景:conf里面有一个ssl的conf,scp过来抄时忘记删除,但nginx下的nginx.conf下是include *.conf,于是出问题了,但nginx不报这个conf有问题,而是说没有找到ssl的crt文件,怎么办?主要是学会看日志 cat /var/log/messages | grep nginx ,看日志才发现是多了一个conf文件。

service nginx reload
Reloading nginx configuration (via systemctl):  Job for nginx.service failed. See 'systemctl status nginx.service' and 'journalctl -xn' for details.
——————————————————————————————————————————————————————————————————————

启动apache服务出现,或启动nginx时出现:
Starting nginx (via systemctl): Job for nginx.service failed. See 'systemctl status nginx.service' and 'journalctl -xn' for details.
查看错误提示

主要是学会看日志 cat /var/log/messages | grep nginx
Oct 10 14:34:12 iZ251vfc84kZ nginx: nginx: [emerg] BIO_new_file("/usr/local/nginx/conf/ssl/svn.justwinit.crt") failed (SSL: error:02001002:system library:fopen:No such file or directory:fopen('/usr/local/nginx/conf/ssl/svn.justwinit.crt','r') error:2006D080:BIO routines:BIO_new_file:no such file)
Oct 10 14:34:12 iZ251vfc84kZ nginx: nginx: configuration file /usr/local/nginx/conf/nginx.conf test failed
Oct 10 14:34:12 iZ251vfc84kZ systemd: nginx.service: control process exited, code=exited status=1
[root@iZ251vfc84kZ vhost]# grep -r "svn.justwinit.crt" ./
./svn.justwinit.conf:        ssl_certificate     ssl/svn.justwinit.crt;
[root@iZ251vfc84kZ vhost]# rm -Rf svn.justwinit.conf


来自:http://wangsheng1.blog.51cto.com/29473/1550655
背景:最近搞Raspberry Pi下的ajax从串口里取数据,需要7X24Hour,3秒一次,用chrome下的js分析工具发现内存有不断增加的情况,Raspberry Pi 512M。

    最近一哥们在做一个Ajax长连接的项目,页面需要和服务器保持长连接,而且在连接超时后需要重新请求连接,过程中他问我要用到什么,我也是想都没想就告诉他用jQuery。jQuery不是有ajaxSuccess ajaxError这些对象吗,在请求完成或者请求失败后重新请求不就好了。

但是后来他告诉我说没有用 jQuery,自己手工写的XMLhttprequest 。他告诉我说,开始是用jquery写的,而且在测试过程中也没有出现问题。但是在后来无意中发现,在页面开的时候久了之后,浏览器资源竟然占用非常高导致内存不足而崩溃了。后来抓包分析发现,每次jquery的Ajax请求都会创建一个xmlHttprequest对象,理论上讲,长连接的请求是一个无限递归,请求数量是非常大的,但是由于每次请求都会建立一个新的xmlhttprequest,而且jquery不会自动回收资源,所以导致了内存溢出。

通过查看jquery API,发现jquery还有一个 complete对象,是请求完成后回调函数 (请求成功或失败之后均调用)。 同时有两个参数XMLHttpRequest, textStatus。所以,我们只需要在请求完成后,将传回的XMLHttprequest对象手工回收即可,代码如下:
代码如下:



来自:http://www.jb51.net/article/30458.htm

原生态的写法如下:
是一本杂志,网上可以下到这本书的pdf文档,以下节选自乔布斯在斯坦福大学上的演讲:

     当我年轻的时候,有一本叫做“整个地球的目录”振聋发聩的杂志,它是我们那一代人的圣经之一。它是一个叫Stewart Brand的家伙在离这里不远的Menlo Park编辑的,他象诗一般神奇地将这本书带到了这个世界。那是六十年代后期, 在个人电脑出现之前, 所以这本书全部是用打字机,、剪刀还有偏光镜制造的。有点像用软皮包装的Google, 在Google出现三十五年之前:这是理想主义的,其中有许多灵巧的工具和伟大的想法。

      Stewart和他的伙伴出版了几期的“整个地球的目录”,当它完成了自己使命的时候,他们做出了最后一期的目录。那是在七十年代的中期, 我正是你们的年纪。在最后一期的封底上是清晨乡村公路的照片(如果你有冒险精神的话,你可以自己找到这条路的),在照片之下有这样一段话:“求知若饥,虚心若愚。”这是他们停止了发刊的告别语。“求知若饥,虚心若愚。(stay hungry,stay foolish)”我总是希望自己能够那样,现在,在你们即将毕业,开始新的旅程的时候,我也希望你们能这样:求知若饥,虚心若愚。非常感谢你们!

在1968年至1972年是定期出版的,在1998年以前有零星出版,整个地球目录作为一个教育工具·:,“发现读者本身自己的灵感,与真正对他的冒险精神感兴趣的人分享自己的环境与创意,。”目录编辑各种工具和产品,除此之外还供供应商购买。通过这种方式目录就等同与灵感的源泉、教育和参考的结合。并有些前瞻性的对网络前景进行歌颂,整个地球目录一直赞扬保有雄心勃勃的理想主义者的精神。
这些是我看英文介绍自己写的,也许不是很全面,但是大概就是这些了
[root@iZ25dcp92ckZ /]# find / -size +200M -exec du -h {} \;
1.1G    /swapfile


————————————————————————————————————
一、查看系统当前的分区情况:

>free -m
二、创建用于交换分区的文件:

>dd if=/dev/zero of=/whatever/swap bs=block_size (10M)count=number_of_block(3000)

三、设置交换分区文件:
>mkswap  /export/swap/swapfile

四、立即启用交换分区文件:
>swapon /whateever/swap

五、若要想使开机时自启用,则需修改文件/etc/fstab中的swap行:

/whatever/swap swap swap defaults 0 0

————————————————————————————————————
如何在红帽 企业版Linux系统中添加swap文件?
解决方法:
1. 确定swap文件的大小,单位为M。将该值乘以1024得到块大小。例如,64MB的swap文件的块大小是65536。

2. 在root提示符下,键入下面的命令,其中count大小等于所要求的块大小:

dd if=/dev/zero f=/swapfile bs=1024 count=65536
3. 建立swap文件:

mkswap /swapfile
4. 要立即打开swap文件而不是在启动时自动开启:

swapon /swapfile
5. 要想在启动时开启,需要在/etc/fstab中添加如下内容:

/swapfile    swap    swap   defaults 0 0
当下一次系统启动时,新的swap文件就打开了。

6. 在添加新的swap文件并开启后,检查cat /proc/swaps 或者free命令的输出来查看swap是否已打开。

7.删除SWAP分区
swapoff /swapfile    修改/etc/fstab文件  rm -rf /swapfile


1 block = 512字节

来自:http://my.oschina.net/jccpp/blog/142980

来自:http://www.linuxidc.com/Linux/2013-03/81890.htm

删除SWAP:
swapon -s
swapoff /dev/dm-1
swapoff:/dev/dm-1: swapoff failed: Cannot allocate memory
kill -9 1503  #java killed
swapoff /dev/dm-1
free -m
背景:正则是一门厚书啊,想写好也不容易,但日常中也就那些像电话、邮箱、手机,网上一堆,但真好验证好了,还得了解一点正则知识,再就是多测试了:-)
下面邮箱正则:
中划线:中划线域名就是米农口中说的扁担域名了,扁担域名由于输入比较麻烦,看起来也比较不正规,是没有多大的价值,目前投资的人是比较少的。按照DNS的标准,域名是不允许有下划线的。
下划线:一些人在注册用户名的喜欢使用下划线_,这种用户名在登录邮箱时很麻烦,给你发邮件的人也很不方便。
二级域名邮箱基本被消灭,这个哥们的正则可以写下划线,扩大了范围但问题不大,主要是起到提示用户就可以了。
com.cn域名支持:((\.[a-zA-Z0-9-]{2,3}){1,2}  com.cn  
——————————————————————————————————————————————————————————————
//emailpreg = /^[A-Za-zd]+([-_.][A-Za-zd]+)*@([A-Za-zd]+[-.])+[A-Za-zd]{2,5}$/; //这个对QQ号的邮箱验证不了。
emailpreg = /^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+((\.[a-zA-Z0-9_-]{2,3}){1,2})$/; //dfdfd1212@dfdfd.abc.cn 都成二级邮箱。abc@12df1.com.cn
emailpreg = /^([a-zA-Z0-9_-])+@([a-zA-Z0-9-])+((\.[a-zA-Z0-9-]{2,3}){1,2})$/;    //域名是不允许有下划线的 ,去掉下划线,这个就是最后的正则,发现其像afeng@staff.jackxiang.com 这样的匹配不了。至于还有啥首字母不能是下划线,要这样,这正则就还得加长...用户也不是sb,只是起到一定提示作用,别搞复杂了,还是做一下简单的验证,对后面的com,tv,com.cn啥的别验证太细了:
^[A-Za-z0-9]+((-|_|\.)[A-Za-z0-9]+)*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$
到此为止吧。
用正则猫可以分析一下:
^[A-Za-z0-9]+   :以大小写字母和数字开头, 并重复一次或多次。
(-|_|\.)             :中间可夹杂- _ . ,注意是分组,这个分组里是或,也就是可没有这些也成。
[A-Za-z0-9]+        :分装后紧跟大小写字母及数字,这个可以重复一次或多次。(如果- _ .没有可以理解为全是匹配一次或多次的大小写字母和数字符)
((-|_|\.)[A-Za-z0-9]+)+      :小组里并成大组匹配一次或多次。
后面也是类似和前面的分组,最后加一个点再匹配一次或多次(点后的com,org,并没有作长度限定)!
============================================================================
<dd><input id="2" rel="邮箱"  res='2' type="text" class="item-edit-txt"  name="2" value="<{$user.email}>" ></dd>

}else if($(this).attr('res') == '2' && !emailpreg.test($(this).val())){//从QQ登录过来的用户大网接口获取不到邮箱,放开让其填写。
    $(this).css("border","1px solid #f00");
    $("#"+$(this).attr('res')+'span').remove();

    $("#"+$(this).attr('res')).after("<span id="+$(this).attr('res')+'span'+"><br />"+$(this).attr("rel")+"格式不正确</span>");
    $(this).focus();
    res = false;
    return false;



——————————————————————————————————————————————————————————————

JavaScript表单验证email,判断一个输入量是否为邮箱email,通过正则表达式实现。
//检查email邮箱
function isEmail(str){
       var reg = /^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+((\.[a-zA-Z0-9_-]{2,3}){1,2})$/;
       return reg.test(str);
}

摘自:http://www.ijavascript.cn/yanzheng/validate-email-186.html
分页: 51/339 第一页 上页 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 下页 最后页 [ 显示模式: 摘要 | 列表 ]