Ajax && encodeURIComponent
http://fayland.org/journal/JS_encode.html
http://fayland.org/journal/JS_encode.html
Php或者Shell 脚本修改crontab实例
Unix/LinuxC技术 jackxiang 2011-3-10 12:06
在linux上的crontab文件中我已有一行,如10 * * * * root /var/www/html/test.php
现在我要通过编写php程序来修改10 * * * * root /var/www/html/test.php
变成22 10 * * * root /var/www/html/aa.php
问题解决了,不过有点傻瓜,不知谁还有什么更好的方法吗?若有,希贴上来,互相学习
问题解决了,不过有点傻瓜,不知谁还有什么更好的方法吗?若有,希贴上来,互相学习
Shell修改Crontab的方法:
脚本一:
脚本二:
来源:
http://topic.csdn.net/u/20090918/14/29cb3abf-6de6-4cc6-a28b-26f234b2a87b.html
http://www.linuxdiyf.com/viewarticle.php?id=14751
现在我要通过编写php程序来修改10 * * * * root /var/www/html/test.php
变成22 10 * * * root /var/www/html/aa.php
问题解决了,不过有点傻瓜,不知谁还有什么更好的方法吗?若有,希贴上来,互相学习
问题解决了,不过有点傻瓜,不知谁还有什么更好的方法吗?若有,希贴上来,互相学习
$fp=fopen("/etc/crontab","rb");
$save=fopen("/home/mysql/crontab","wb");
$i=0;
/*foreach ($f as $v)
{
$t = preg_replace('13 15 * * * root /usr/bin/php /var/www/html/mysqlbackup/testClient.php', '* * *', $v);
$result[] = $t;
}*/
while (!feof($fp)) {
$buffer = fgets($fp);
fwrite($save,$buffer);
$i=$i+1;
if ($i==10){
fwrite($save,"success");
break;
}
}
fclose($fp);
fclose($save);
$fp=fopen("/etc/crontab","wb");
$save=fopen("/home/mysql/crontab","rb");
$i=0;
while (!feof($save)) {
$buffer = fgets($save);
fwrite($fp,$buffer);
}
fclose($fp);
fclose($save);
$save=fopen("/home/mysql/crontab","wb");
$i=0;
/*foreach ($f as $v)
{
$t = preg_replace('13 15 * * * root /usr/bin/php /var/www/html/mysqlbackup/testClient.php', '* * *', $v);
$result[] = $t;
}*/
while (!feof($fp)) {
$buffer = fgets($fp);
fwrite($save,$buffer);
$i=$i+1;
if ($i==10){
fwrite($save,"success");
break;
}
}
fclose($fp);
fclose($save);
$fp=fopen("/etc/crontab","wb");
$save=fopen("/home/mysql/crontab","rb");
$i=0;
while (!feof($save)) {
$buffer = fgets($save);
fwrite($fp,$buffer);
}
fclose($fp);
fclose($save);
Shell修改Crontab的方法:
脚本一:
#!/bin/bash
#cron_file='/home/zary/b';
cron_tmp='/home/zary/d';
cronpath="/home/zary/b";
cronbak='/home/zary/f';
parameter=;
if [ "$parameter" = "change" ]
then
cp $cronpath $cronbak;
sed -e '/c_check_mysqlstatus\.sh/s/^#//' -e '/c_check_webstatus\.sh/s/^#//' \
-e '/c_syscheck\.sh/s/#//' -e '/c_syscheck\.sh/s/^11/#11/' $cronpath >$cron_tmp;
cp $cron_tmp $cronpath;
crontab $cronpath;
elif [ "$parameter" = "resume" ]
then
sed -e '/c_check_webstatus\.sh/s/^/#/' -e '/c_check_mysqlstatus\.sh/s/^/#/' \
-e '/c_syscheck\.sh/s/^#//' -e '/c_syscheck\.sh/s/^\*\/20/#\*\/20/' $cronpath >$cron_tmp;
cp $cron_tmp $cronpath;
crontab $cronpath;
else
echo "Usage: c_startcron.sh [change/resume]";
fi
#cron_file='/home/zary/b';
cron_tmp='/home/zary/d';
cronpath="/home/zary/b";
cronbak='/home/zary/f';
parameter=;
if [ "$parameter" = "change" ]
then
cp $cronpath $cronbak;
sed -e '/c_check_mysqlstatus\.sh/s/^#//' -e '/c_check_webstatus\.sh/s/^#//' \
-e '/c_syscheck\.sh/s/#//' -e '/c_syscheck\.sh/s/^11/#11/' $cronpath >$cron_tmp;
cp $cron_tmp $cronpath;
crontab $cronpath;
elif [ "$parameter" = "resume" ]
then
sed -e '/c_check_webstatus\.sh/s/^/#/' -e '/c_check_mysqlstatus\.sh/s/^/#/' \
-e '/c_syscheck\.sh/s/^#//' -e '/c_syscheck\.sh/s/^\*\/20/#\*\/20/' $cronpath >$cron_tmp;
cp $cron_tmp $cronpath;
crontab $cronpath;
else
echo "Usage: c_startcron.sh [change/resume]";
fi
脚本二:
#!/bin/bash
cronpath="/var/spool/cron/root";
if [ = 'tw' ]
then
kick="tw_mail.php";
elif [ = "nw" ]
then
kick="nw_mail.php";
elif [ = "pw" ]
then
kick="pw_mail.php";
fi
crontab -l|egrep -v "$kick">/tmp/crontab;
case "" in
daily)
date=" * * *";
;
weekly)
date=" * * 1";
;
monthly)
date=" * 1 *";
;
esac
cat /tmp/crontab > $cronpath;
if [ = "on" ]
then
echo "$date /usr/local/php5/bin/php /home/htdocs/pukicn/new/OM/Cron/$kick">>$cronpath;
fi
cronpath="/var/spool/cron/root";
if [ = 'tw' ]
then
kick="tw_mail.php";
elif [ = "nw" ]
then
kick="nw_mail.php";
elif [ = "pw" ]
then
kick="pw_mail.php";
fi
crontab -l|egrep -v "$kick">/tmp/crontab;
case "" in
daily)
date=" * * *";
;
weekly)
date=" * * 1";
;
monthly)
date=" * 1 *";
;
esac
cat /tmp/crontab > $cronpath;
if [ = "on" ]
then
echo "$date /usr/local/php5/bin/php /home/htdocs/pukicn/new/OM/Cron/$kick">>$cronpath;
fi
来源:
http://topic.csdn.net/u/20090918/14/29cb3abf-6de6-4cc6-a28b-26f234b2a87b.html
http://www.linuxdiyf.com/viewarticle.php?id=14751
Fenng:所谓一种理想:某某公司的数据中心位于甘肃玉门,数据中心的电力全部来自于风力发电,用祁连山融化的雪水冷却数据中心产生的热量,它是中国第一个绿色环保的数据中心。这是公司的一位来自Cxxxx的牛人给我们传达的理念,据说他来公司并不是为了钱,而是为了实现他的人生理想:建立绿色环保的数据中心。
某个牛人,想把阿里的机房搞成那样。。。。听说走了现在
阅读全文
每次安装office的时候,我就都会很小心的把微软拼音输入法去掉,但每次安装完以后它还是顽固的跳出来,叽叽歪歪跟在别的输入法旁边……长的丑不是你的错,出来吓人就是你的不对了。
正在寻找彻底删除微软拼音输入法的方法:
更新日志
2009-04-20
1、运行:
Regsvr32 /U Msimtf.dll
Regsvr32 /U Msctf.dll
2、用regedit,在注册表中,删除键值:
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\MSSCIPY
3、在“文字服务和输入语言”中,删除“微软拼音输入法2003”这个输入法。
重启计算机并启动Office 2007后,输入法再次跳出,失败!
20090514
开始->运行->输入“MsiExec.exe /X{90120000-0028-0804-0000-0000000FF1CE}”,然后点击确定卸载。卸载完毕后再进入输入法设置,删除微软输入法即可。
观察中!
哗!
我使用下面的方法,结果还是OK的,如下:
MsiExec.exe /X{90120000-0028-0804-0000-0000000FF1CE}
C:\WINNT\SYSTEM32\IME\PINTLGNT\PINTSETP.EXE
學習!支持!
找到PINTSETP.EXE
win2000下位于C:\WINDOWS\SYSTEM32\IME\PINTLGNT,其他系统可以搜索一下,然后双击执行,选择卸载
第一:如果你没有安装office xp。很简单,就像大家说的到控制面板直接删 除,或通过超级兔仔里的输入发设置删除。
第二:如果你安装了office xp 英文版加中文包。光靠上面的方法是无法删除微软拼音输入法3.0的。因为它是office xp中文包的一个可选性插件。你可以用添加删除程序(在控制面板里)选择office xp的中文包,点击更改删除选项。进入后,选择add/remove。在里面有个可选项是添加或删除微软拼音输入法3.0的。把它“X”就可以了。
good luck!!!
A suprise!
HKEY_USERS\.DEFAULT\Keyboard Layout\Preload
来源:http://sheepshell.blog.163.com/blog/static/89033820093203356296/
输入法我一般使用搜狗,并且就这一个输入法就够了,我喜欢简单、整洁、适用,呵呵!(仅个人习惯,^_^)
最近安装0FFICE2003,居然里面自带的“微软输入法”怎么也删除不掉,利用设置来更改,更是连微软输入法的也找不到,呵呵,这也太强制性了点吧!
现在我想说说我是怎么删除这强制性的字体的吧:
1. 在“开始/运行”框中输入“regedit.exe”,打开注册表编辑器。
2. 运行以下命令:
Regsvr32 /U Msctf.dll
3. 把注册表中
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\MSSCIPY
这一主键删除, 完成 !
正在寻找彻底删除微软拼音输入法的方法:
更新日志
2009-04-20
1、运行:
Regsvr32 /U Msimtf.dll
Regsvr32 /U Msctf.dll
2、用regedit,在注册表中,删除键值:
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\MSSCIPY
3、在“文字服务和输入语言”中,删除“微软拼音输入法2003”这个输入法。
重启计算机并启动Office 2007后,输入法再次跳出,失败!
20090514
开始->运行->输入“MsiExec.exe /X{90120000-0028-0804-0000-0000000FF1CE}”,然后点击确定卸载。卸载完毕后再进入输入法设置,删除微软输入法即可。
观察中!
哗!
我使用下面的方法,结果还是OK的,如下:
MsiExec.exe /X{90120000-0028-0804-0000-0000000FF1CE}
C:\WINNT\SYSTEM32\IME\PINTLGNT\PINTSETP.EXE
學習!支持!
找到PINTSETP.EXE
win2000下位于C:\WINDOWS\SYSTEM32\IME\PINTLGNT,其他系统可以搜索一下,然后双击执行,选择卸载
第一:如果你没有安装office xp。很简单,就像大家说的到控制面板直接删 除,或通过超级兔仔里的输入发设置删除。
第二:如果你安装了office xp 英文版加中文包。光靠上面的方法是无法删除微软拼音输入法3.0的。因为它是office xp中文包的一个可选性插件。你可以用添加删除程序(在控制面板里)选择office xp的中文包,点击更改删除选项。进入后,选择add/remove。在里面有个可选项是添加或删除微软拼音输入法3.0的。把它“X”就可以了。
good luck!!!
A suprise!
HKEY_USERS\.DEFAULT\Keyboard Layout\Preload
来源:http://sheepshell.blog.163.com/blog/static/89033820093203356296/
输入法我一般使用搜狗,并且就这一个输入法就够了,我喜欢简单、整洁、适用,呵呵!(仅个人习惯,^_^)
最近安装0FFICE2003,居然里面自带的“微软输入法”怎么也删除不掉,利用设置来更改,更是连微软输入法的也找不到,呵呵,这也太强制性了点吧!
现在我想说说我是怎么删除这强制性的字体的吧:
1. 在“开始/运行”框中输入“regedit.exe”,打开注册表编辑器。
2. 运行以下命令:
Regsvr32 /U Msctf.dll
3. 把注册表中
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\MSSCIPY
这一主键删除, 完成 !
button {cursor:pointer;}
fieldset,form{ background:none; border:none; padding:0; margin:0;}
form
{
margin:0px;display: inline
}
margin: 上下左右间隔都设为 0px {
margin:0px;display: inline
}
display: inline 之后显示的秀在同一行。
其他情况想不换行也是一样的做法:
<h1> Head Line</h1>
如
<h1 style="display: inline;">
扣一个js代码:
onfocus="if(this.value=='按QQ号搜索作品') this.value='';" onblur="if(this.value=='') this.value='按QQ号搜索作品';"
整体就是这样:
<input type="text" onfocus="if(this.value=='按QQ号搜索作品') this.value='';" onblur="if(this.value=='') this.value='按QQ号搜索作品';" />
onfocus="if(this.value=='按QQ号搜索作品') this.value='';" onblur="if(this.value=='') this.value='按QQ号搜索作品';"
整体就是这样:
<input type="text" onfocus="if(this.value=='按QQ号搜索作品') this.value='';" onblur="if(this.value=='') this.value='按QQ号搜索作品';" />
我觉得很简单。你直接强制把那个数给整为整数后再和原始的数对比,一致说明不是,不一致就是!
你的意思把那个数强制转成整型,要是一致说明这个数不是64位整型数?
floatval 可以用来装这个整数。
PS:如果用的是64位操作系统就好了。或者php编译的时候加上某个参数其整数范围可能就大与常规32位整数。
64位整型数的长度,2的N次方,还有正数负数等的问题。长整型啥的全是正数等都是需要注意的点,php比较弱这块,区分不严格。
你的意思把那个数强制转成整型,要是一致说明这个数不是64位整型数?
floatval 可以用来装这个整数。
PS:如果用的是64位操作系统就好了。或者php编译的时候加上某个参数其整数范围可能就大与常规32位整数。
64位整型数的长度,2的N次方,还有正数负数等的问题。长整型啥的全是正数等都是需要注意的点,php比较弱这块,区分不严格。
http://item.taobao.com/item.htm?id=6240509546
西海岸 184.82.225.34 这个感觉不错,呵呵。
后面那个IP好像慢一点!
http://item.taobao.com/item.htm?id=4158438070
http://item.taobao.com/item.htm?id=9170964773
This:
http://item.taobao.com/item.htm?id=4158438070
http://item.taobao.com/item.htm?id=9174547211
See:
http://item.taobao.com/item.htm?id=7873039697
Burstnet VPS试用总结:
前段时间开始使用Burstnet的VPS服务以来,一直是不错的,速度蛮可观,但也多次出现了服务器不能连接、内存莫名100%占用等现象,稳定性堪忧,实在是经不起折腾了,考虑再三,现在博客已转战到了富有盛誉的Linode Xen VPS,为Linode 512方案,虽然贵些,但总归稳定压倒一切。
这是我的Linode推荐码:ebff47bacacf026f6dd8eac79f6779d3ff6da058,有需要可以使用下作为支持,详细了解或注册Linode请点击这里。
西海岸 184.82.225.34 这个感觉不错,呵呵。
后面那个IP好像慢一点!
http://item.taobao.com/item.htm?id=4158438070
http://item.taobao.com/item.htm?id=9170964773
This:
http://item.taobao.com/item.htm?id=4158438070
http://item.taobao.com/item.htm?id=9174547211
See:
http://item.taobao.com/item.htm?id=7873039697
Burstnet VPS试用总结:
前段时间开始使用Burstnet的VPS服务以来,一直是不错的,速度蛮可观,但也多次出现了服务器不能连接、内存莫名100%占用等现象,稳定性堪忧,实在是经不起折腾了,考虑再三,现在博客已转战到了富有盛誉的Linode Xen VPS,为Linode 512方案,虽然贵些,但总归稳定压倒一切。
这是我的Linode推荐码:ebff47bacacf026f6dd8eac79f6779d3ff6da058,有需要可以使用下作为支持,详细了解或注册Linode请点击这里。
一、永久修改 ulimit 限制,需要修改系统配置文件:
编辑 /etc/security/limits.conf 文件
打开 /etc/security/limits.conf 文件并添加以下行:
* soft nofile 20480
* hard nofile 20480
* soft nproc 20480
* hard nproc 20480
hive -nofile 20480
hive -nproc 20480
二、打开 /etc/sysctl.conf 文件并添加或修改以下内容:
fs.file-max = 2097152
文章尾部有更详细的说明。
=================================================
一)/etc/profile里有一行, ulimit -S -c 0 > /dev/null,非Root登录还提示一个:
Last login: Thu Nov 8 10:54:22 2018 from 10.4.12.52
-bash: ulimit: open files: cannot modify limit: Operation not permitted
vi /etc/profile
ulimit -n 204800
# No core files by default
ulimit -S -c 0 > /dev/null 2>&1
解释:
系统值65535,用户值65536,内核的值1048576不要动:
一)vi /etc/sysctl.conf
fs.file-max = 65535
二)大数据ELK的需要65536:
vi /etc/security/limits.conf
* soft nofile 65536
* hard nofile 65536
三)这个不用修改:找到问题了,centos系统设置每个进程的最大打开文件句柄数不能超过1048576。可以通过修改/proc/sys/fs/nr_open加大进程数。
cat /proc/sys/fs/nr_open
1048576
四)/etc/security/limits.d/90-nproc.conf文件尾添加
* soft nproc 204800
* hard nproc 204800
五)/etc/security/limits.d/def.conf文件尾添加
* soft nofile 204800
* hard nofile 204800
ulimit -a
core file size (blocks, -c) 0
data seg size (kbytes, -d) unlimited
scheduling priority (-e) 0
file size (blocks, -f) unlimited
pending signals (-i) 62224
max locked memory (kbytes, -l) 64
max memory size (kbytes, -m) unlimited
open files (-n) 204800
pipe size (512 bytes, -p) 8
POSIX message queues (bytes, -q) 819200
real-time priority (-r) 0
stack size (kbytes, -s) 8192
cpu time (seconds, -t) unlimited
max user processes (-u) 204800
virtual memory (kbytes, -v) unlimited
file locks (-x) unlimited
来自:https://blog.csdn.net/yu757371316/article/details/77863173
=========================================================================================
ulimit -a 用来显示当前的各种用户进程限制。
Linux对于每个用户,系统限制其最大进程数。为提高性能,可以根据设备资源情况,
设置各linux 用户的最大进程数,下面我把某linux用户的最大进程数设为10000个:
ulimit -u 10000
对于需要做许多 socket 连接并使它们处于打开状态的 Java 应用程序而言,
最好通过使用 ulimit -n xx 修改每个进程可打开的文件数,缺省值是 1024。
ulimit -n 4096 将每个进程可以打开的文件数目加大到4096,缺省为1024
其他建议设置成无限制(unlimited)的一些重要设置是:
数据段长度:ulimit -d unlimited
最大内存大小:ulimit -m unlimited
堆栈大小:ulimit -s unlimited
CPU 时间:ulimit -t unlimited
虚拟内存:ulimit -v unlimited
我们公司服务器需要调整ulimit的stack size 参数调整为unlimited 无限,使用ulimit -s unlimited时只能在当时的shell见效,重开一个shell就失效了。。于是得在/etc/profile 的最后面添加ulimit -s unlimited 就可以了,source /etc/profile使修改文件生效。
PS:如果你碰到类似的错误提示
ulimit: max user processes: cannot modify limit: 不允许的操作
ulimit: open files: cannot modify limit: 不允许的操作
为啥root用户是可以的?普通用户又会遇到这样的问题?
看一下/etc/security/limits.conf大概就会明白。
linux对用户有默认的ulimit限制,而这个文件可以配置用户的硬配置和软配置,硬配置是个上限。
超出上限的修改就会出“不允许的操作”这样的错误。
在limits.conf加上
* soft noproc 10240
* hard noproc 10240
* soft nofile 10240
* hard nofile 10240
就是限制了任意用户的最大线程数和文件数为10240。
来源:http://antsw.blog.51cto.com/936097/214997
来自人工智能:
在 CentOS 中,可以通过查看系统的文件句柄数量以及调整 `ulimit` 的软硬限制来管理系统资源。以下是相关步骤:
### 1. **查看当前系统的文件句柄数**
可以使用以下方法查看系统当前打开的文件句柄数量。
#### 1.1 使用 `lsof` 查看所有进程的文件句柄数量
```bash
lsof | wc -l
```
`lsof` 命令列出所有打开的文件,`wc -l` 统计文件句柄数量。这个命令输出的是系统当前所有打开的文件句柄的总数。
#### 1.2 查看单个进程的文件句柄数
如果你只想查看某个进程的文件句柄数,例如 PID 为 1234,可以使用:
```bash
ls /proc/1234/fd | wc -l
```
`/proc/[PID]/fd` 目录包含该进程打开的文件描述符,通过统计这个目录中的文件数量可以得到文件句柄数。
### 2. **查看和修改 `ulimit` 限制**
`ulimit` 用于控制用户或进程的资源使用,包括打开的文件句柄数量(文件描述符)。你可以查看和修改 `ulimit` 的软硬限制。
#### 2.1 查看当前的文件句柄限制
使用 `ulimit` 命令可以查看当前的文件句柄限制:
- 查看软限制(当前会话的限制):
```bash
ulimit -n
```
- 查看硬限制(系统最大允许的限制):
```bash
ulimit -Hn
```
#### 2.2 临时修改文件句柄限制
你可以临时修改当前会话的软硬限制。注意,临时修改只对当前会话有效,重启后会恢复默认值。
- 修改软限制:
```bash
ulimit -Sn [新的软限制值]
```
- 修改硬限制:
```bash
ulimit -Hn [新的硬限制值]
```
例如,设置软限制为 10240,硬限制为 20480:
```bash
ulimit -Sn 10240
ulimit -Hn 20480
```
#### 2.3 永久修改文件句柄限制
为了永久修改 `ulimit` 限制,需要修改系统配置文件:
##### 编辑 `/etc/security/limits.conf` 文件
打开 `/etc/security/limits.conf` 文件并添加以下行:
```bash
* soft nofile 10240
* hard nofile 20480
```
这将把所有用户的软限制设置为 10240,硬限制设置为 20480。你也可以为特定用户或组设置不同的限制。
##### 编辑 `/etc/sysctl.conf` 文件
为了确保系统内核支持更高的文件句柄数,还需要修改内核参数。打开 `/etc/sysctl.conf` 文件并添加或修改以下内容:
```bash
fs.file-max = 2097152
```
然后执行以下命令应用更改:
```bash
sudo sysctl -p
```
##### 编辑 `/etc/pam.d/common-session` 文件
确保 PAM 模块支持读取 `limits.conf`,在 `/etc/pam.d/common-session` 文件中添加以下行:
```bash
session required pam_limits.so
```
### 3. **重启服务或系统**
如果你修改了文件句柄的永久设置,需要重启系统或相关服务以使其生效:
```bash
sudo reboot
```
或针对特定服务:
```bash
sudo systemctl restart [服务名]
```
### 总结
- 使用 `lsof | wc -l` 可以查看当前系统的句柄数。
- `ulimit -n` 查看软限制,`ulimit -Hn` 查看硬限制。
- 临时修改限制使用 `ulimit -Sn` 和 `ulimit -Hn`。
- 永久修改限制需要编辑 `/etc/security/limits.conf`、`/etc/sysctl.conf`,并确保 PAM 模块配置正确。
这样可以有效管理 CentOS 系统中的文件句柄资源。
编辑 /etc/security/limits.conf 文件
打开 /etc/security/limits.conf 文件并添加以下行:
* soft nofile 20480
* hard nofile 20480
* soft nproc 20480
* hard nproc 20480
hive -nofile 20480
hive -nproc 20480
二、打开 /etc/sysctl.conf 文件并添加或修改以下内容:
fs.file-max = 2097152
文章尾部有更详细的说明。
=================================================
一)/etc/profile里有一行, ulimit -S -c 0 > /dev/null,非Root登录还提示一个:
Last login: Thu Nov 8 10:54:22 2018 from 10.4.12.52
-bash: ulimit: open files: cannot modify limit: Operation not permitted
vi /etc/profile
ulimit -n 204800
# No core files by default
ulimit -S -c 0 > /dev/null 2>&1
解释:
系统值65535,用户值65536,内核的值1048576不要动:
一)vi /etc/sysctl.conf
fs.file-max = 65535
二)大数据ELK的需要65536:
vi /etc/security/limits.conf
* soft nofile 65536
* hard nofile 65536
三)这个不用修改:找到问题了,centos系统设置每个进程的最大打开文件句柄数不能超过1048576。可以通过修改/proc/sys/fs/nr_open加大进程数。
cat /proc/sys/fs/nr_open
1048576
四)/etc/security/limits.d/90-nproc.conf文件尾添加
* soft nproc 204800
* hard nproc 204800
五)/etc/security/limits.d/def.conf文件尾添加
* soft nofile 204800
* hard nofile 204800
ulimit -a
core file size (blocks, -c) 0
data seg size (kbytes, -d) unlimited
scheduling priority (-e) 0
file size (blocks, -f) unlimited
pending signals (-i) 62224
max locked memory (kbytes, -l) 64
max memory size (kbytes, -m) unlimited
open files (-n) 204800
pipe size (512 bytes, -p) 8
POSIX message queues (bytes, -q) 819200
real-time priority (-r) 0
stack size (kbytes, -s) 8192
cpu time (seconds, -t) unlimited
max user processes (-u) 204800
virtual memory (kbytes, -v) unlimited
file locks (-x) unlimited
来自:https://blog.csdn.net/yu757371316/article/details/77863173
=========================================================================================
ulimit -a 用来显示当前的各种用户进程限制。
Linux对于每个用户,系统限制其最大进程数。为提高性能,可以根据设备资源情况,
设置各linux 用户的最大进程数,下面我把某linux用户的最大进程数设为10000个:
ulimit -u 10000
对于需要做许多 socket 连接并使它们处于打开状态的 Java 应用程序而言,
最好通过使用 ulimit -n xx 修改每个进程可打开的文件数,缺省值是 1024。
ulimit -n 4096 将每个进程可以打开的文件数目加大到4096,缺省为1024
其他建议设置成无限制(unlimited)的一些重要设置是:
数据段长度:ulimit -d unlimited
最大内存大小:ulimit -m unlimited
堆栈大小:ulimit -s unlimited
CPU 时间:ulimit -t unlimited
虚拟内存:ulimit -v unlimited
我们公司服务器需要调整ulimit的stack size 参数调整为unlimited 无限,使用ulimit -s unlimited时只能在当时的shell见效,重开一个shell就失效了。。于是得在/etc/profile 的最后面添加ulimit -s unlimited 就可以了,source /etc/profile使修改文件生效。
PS:如果你碰到类似的错误提示
ulimit: max user processes: cannot modify limit: 不允许的操作
ulimit: open files: cannot modify limit: 不允许的操作
为啥root用户是可以的?普通用户又会遇到这样的问题?
看一下/etc/security/limits.conf大概就会明白。
linux对用户有默认的ulimit限制,而这个文件可以配置用户的硬配置和软配置,硬配置是个上限。
超出上限的修改就会出“不允许的操作”这样的错误。
在limits.conf加上
* soft noproc 10240
* hard noproc 10240
* soft nofile 10240
* hard nofile 10240
就是限制了任意用户的最大线程数和文件数为10240。
来源:http://antsw.blog.51cto.com/936097/214997
来自人工智能:
在 CentOS 中,可以通过查看系统的文件句柄数量以及调整 `ulimit` 的软硬限制来管理系统资源。以下是相关步骤:
### 1. **查看当前系统的文件句柄数**
可以使用以下方法查看系统当前打开的文件句柄数量。
#### 1.1 使用 `lsof` 查看所有进程的文件句柄数量
```bash
lsof | wc -l
```
`lsof` 命令列出所有打开的文件,`wc -l` 统计文件句柄数量。这个命令输出的是系统当前所有打开的文件句柄的总数。
#### 1.2 查看单个进程的文件句柄数
如果你只想查看某个进程的文件句柄数,例如 PID 为 1234,可以使用:
```bash
ls /proc/1234/fd | wc -l
```
`/proc/[PID]/fd` 目录包含该进程打开的文件描述符,通过统计这个目录中的文件数量可以得到文件句柄数。
### 2. **查看和修改 `ulimit` 限制**
`ulimit` 用于控制用户或进程的资源使用,包括打开的文件句柄数量(文件描述符)。你可以查看和修改 `ulimit` 的软硬限制。
#### 2.1 查看当前的文件句柄限制
使用 `ulimit` 命令可以查看当前的文件句柄限制:
- 查看软限制(当前会话的限制):
```bash
ulimit -n
```
- 查看硬限制(系统最大允许的限制):
```bash
ulimit -Hn
```
#### 2.2 临时修改文件句柄限制
你可以临时修改当前会话的软硬限制。注意,临时修改只对当前会话有效,重启后会恢复默认值。
- 修改软限制:
```bash
ulimit -Sn [新的软限制值]
```
- 修改硬限制:
```bash
ulimit -Hn [新的硬限制值]
```
例如,设置软限制为 10240,硬限制为 20480:
```bash
ulimit -Sn 10240
ulimit -Hn 20480
```
#### 2.3 永久修改文件句柄限制
为了永久修改 `ulimit` 限制,需要修改系统配置文件:
##### 编辑 `/etc/security/limits.conf` 文件
打开 `/etc/security/limits.conf` 文件并添加以下行:
```bash
* soft nofile 10240
* hard nofile 20480
```
这将把所有用户的软限制设置为 10240,硬限制设置为 20480。你也可以为特定用户或组设置不同的限制。
##### 编辑 `/etc/sysctl.conf` 文件
为了确保系统内核支持更高的文件句柄数,还需要修改内核参数。打开 `/etc/sysctl.conf` 文件并添加或修改以下内容:
```bash
fs.file-max = 2097152
```
然后执行以下命令应用更改:
```bash
sudo sysctl -p
```
##### 编辑 `/etc/pam.d/common-session` 文件
确保 PAM 模块支持读取 `limits.conf`,在 `/etc/pam.d/common-session` 文件中添加以下行:
```bash
session required pam_limits.so
```
### 3. **重启服务或系统**
如果你修改了文件句柄的永久设置,需要重启系统或相关服务以使其生效:
```bash
sudo reboot
```
或针对特定服务:
```bash
sudo systemctl restart [服务名]
```
### 总结
- 使用 `lsof | wc -l` 可以查看当前系统的句柄数。
- `ulimit -n` 查看软限制,`ulimit -Hn` 查看硬限制。
- 临时修改限制使用 `ulimit -Sn` 和 `ulimit -Hn`。
- 永久修改限制需要编辑 `/etc/security/limits.conf`、`/etc/sysctl.conf`,并确保 PAM 模块配置正确。
这样可以有效管理 CentOS 系统中的文件句柄资源。
<script type="text/javascript" src="./jquery.js"></script>
<script type="text/javascript">
$(document).ready(function(){
$("span").click(function(){
alert($(this).html()); //把DOM的this对象包装成jq对象
});
});
</script>
<span>aaa</span>
<span>bbb</span>
<span>ccc</span>
<span>ddd</span>
来源:http://zhidao.baidu.com/question/151134452.html
起初以为this和$(this)就是一模子刻出来。但是我在阅读时,和coding时发现,总不是一回事。
http://neatstudio.com/show-833-1.shtml
javascript中onclick(this) 中的this指当前什么东西?
this就是当前标签本身
onclick=xxx(this)表示一个单击事件,来进行调用xxx(this)这个JavaScript函数。而xxx(this)函数中的this表示你要进行单击对象的本身。
把this当做参数传到函数中去,实践Ok:
于是最上面那个可以用onclick事件来传入到函数中,并用juqury来进行操作,如下实践Ok:
点击后,结果如下:
结果:
<option value="1">日志标题</option>
<option value="2">日志全文</option>
<option value="3">评论引用</option>
<option value="4">所有留言</option>
<option value="5">页面搜索</option>
结果:1
而两种this获取Id值是这样的,实践也OK,如下:
对于多个id的按钮下进行click时,查找是哪个id值被点了,如下,但是有发ajax后,就不能在ajax里去写this了,那就是ajax那个this了,只能传入,如下所示:
通过this传入变量:
在<a 中实现Js函数的this调用:
jQuery操作元素的属性与样式:
//替换css 的class类
$("#button"+answerid).removeClass('submitbutton');
$("#button"+answerid).addClass('submitbuttondisabled');
//替换css 的class类
$("#button"+answerid).removeClass('submitbutton');
$("#button"+answerid).addClass('submitbuttondisabled');
1.jquery添加
2.json eval,输出json二级用点来:var info=anObjectEval.info.info;
3.循环输出
对json用点,可以通过json树转为树形后,在根据显示的树形节点图层级关系通过点来实现!!!
阅读全文
2.json eval,输出json二级用点来:var info=anObjectEval.info.info;
3.循环输出
对json用点,可以通过json树转为树形后,在根据显示的树形节点图层级关系通过点来实现!!!
阅读全文
javascript实现:
top.location.href 顶级窗口的地址
this.location.href 当前窗口的地址
来自:http://www.cnblogs.com/A-Song/archive/2011/12/14/2288215.html
top.location.href 顶级窗口的地址
this.location.href 当前窗口的地址
来自:http://www.cnblogs.com/A-Song/archive/2011/12/14/2288215.html
一、描述
intval函数有个特性:”直到遇上数字或正负符号才开始做转换,再遇到非数字或字符串结束时()结束转换”,在某些应用程序里由于对intval函数这个特性认识不够,错误的使用导致绕过一些安全判断导致安全漏洞.
二、分析
PHP_FUNCTION(intval)
{
zval **num, **arg_base;
int base;
switch (ZEND_NUM_ARGS()) {
case 1:
if (zend_get_parameters_ex(1, &num) == FAILURE) {
WRONG_PARAM_COUNT;
}
base = 10;
break;
case 2:
if (zend_get_parameters_ex(2, &num, &arg_base) == FAILURE) {
WRONG_PARAM_COUNT;
}
convert_to_long_ex(arg_base);
base = Z_LVAL_PP(arg_base);
break;
default:
WRONG_PARAM_COUNT;
}
RETVAL_ZVAL(*num, 1, 0);
convert_to_long_base(return_value, base);
}
Zend/zend_operators.c->>convert_to_long_base()
……
case IS_STRING:
strval = Z_STRVAL_P(op);
Z_LVAL_P(op) = strtol(strval, NULL, base);
STR_FREE(strval);
break;
当intval函数接受到字符串型参数是调用convert_to_long_base()处理,接下来调用Z_LVAL_P(op) = strtol(strval, NULL, base);通过strtol函数来处理参数。
函数原型如下:
long int strtol(const char *nptr,char **endptr,int base);
这个函数会将参数nptr字符串根据参数base来转换成长整型数,参数base范围从2至36,或0.参数base代表采用的进制方式,如base值为10则采用10进制,若base值为16则采用16进制等。
流程为:
strtol()会扫描参数nptr字符串,跳过前面的空格字符,直到遇上数字或正负符号才开始做转换,再遇到非数字或字符串结束时()结束转换,并将结果返回。
那么当intval用在if等的判断里面,将会导致这个判断实去意义,从而导致安全漏洞.
三、测试代码
输出结果:
必须从0.7开始加,从0.8开始加都是正确的,下面正常:
来源:http://www.cndong.cn/php-built-in-function-intval-the-use-of-inappropriate-analysis-of-security-vulnerabilities.html
intval函数有个特性:”直到遇上数字或正负符号才开始做转换,再遇到非数字或字符串结束时()结束转换”,在某些应用程序里由于对intval函数这个特性认识不够,错误的使用导致绕过一些安全判断导致安全漏洞.
二、分析
PHP_FUNCTION(intval)
{
zval **num, **arg_base;
int base;
switch (ZEND_NUM_ARGS()) {
case 1:
if (zend_get_parameters_ex(1, &num) == FAILURE) {
WRONG_PARAM_COUNT;
}
base = 10;
break;
case 2:
if (zend_get_parameters_ex(2, &num, &arg_base) == FAILURE) {
WRONG_PARAM_COUNT;
}
convert_to_long_ex(arg_base);
base = Z_LVAL_PP(arg_base);
break;
default:
WRONG_PARAM_COUNT;
}
RETVAL_ZVAL(*num, 1, 0);
convert_to_long_base(return_value, base);
}
Zend/zend_operators.c->>convert_to_long_base()
……
case IS_STRING:
strval = Z_STRVAL_P(op);
Z_LVAL_P(op) = strtol(strval, NULL, base);
STR_FREE(strval);
break;
当intval函数接受到字符串型参数是调用convert_to_long_base()处理,接下来调用Z_LVAL_P(op) = strtol(strval, NULL, base);通过strtol函数来处理参数。
函数原型如下:
long int strtol(const char *nptr,char **endptr,int base);
这个函数会将参数nptr字符串根据参数base来转换成长整型数,参数base范围从2至36,或0.参数base代表采用的进制方式,如base值为10则采用10进制,若base值为16则采用16进制等。
流程为:
strtol()会扫描参数nptr字符串,跳过前面的空格字符,直到遇上数字或正负符号才开始做转换,再遇到非数字或字符串结束时()结束转换,并将结果返回。
那么当intval用在if等的判断里面,将会导致这个判断实去意义,从而导致安全漏洞.
三、测试代码
<?php
$o = 0.1;
for($a = 1; $a < 100; $a++){
$o += 0.1;
echo "<br>intval($o) = ".intval($o);
if(intval($o)){
print(" true");
}else{
print(" false");
}
}?>
$o = 0.1;
for($a = 1; $a < 100; $a++){
$o += 0.1;
echo "<br>intval($o) = ".intval($o);
if(intval($o)){
print(" true");
}else{
print(" false");
}
}?>
输出结果:
intval(0.2) = 0 false
intval(0.3) = 0 false
intval(0.4) = 0 false
intval(0.5) = 0 false
intval(0.6) = 0 false
intval(0.7) = 0 false
intval(0.8) = 0 false
intval(0.9) = 0 false
intval(1) = 0 false
intval(1.1) = 1 true
intval(1.2) = 1 true
intval(1.3) = 1 true
intval(1.4) = 1 true
intval(1.5) = 1 true
intval(1.6) = 1 true
intval(1.7) = 1 true
intval(1.8) = 1 true
intval(1.9) = 1 true
intval(2) = 2 true
…..
intval(0.3) = 0 false
intval(0.4) = 0 false
intval(0.5) = 0 false
intval(0.6) = 0 false
intval(0.7) = 0 false
intval(0.8) = 0 false
intval(0.9) = 0 false
intval(1) = 0 false
intval(1.1) = 1 true
intval(1.2) = 1 true
intval(1.3) = 1 true
intval(1.4) = 1 true
intval(1.5) = 1 true
intval(1.6) = 1 true
intval(1.7) = 1 true
intval(1.8) = 1 true
intval(1.9) = 1 true
intval(2) = 2 true
…..
必须从0.7开始加,从0.8开始加都是正确的,下面正常:
$o = 0.7;
$o += 0.1;
$o += 0.1;
$o +=0.1;
echo $o;
echo "<hr>";
echo "<br>intval($o) = ".intval($o);
if(intval($o)){
print(" true");
}else{
print(" false");
}
$o += 0.1;
$o += 0.1;
$o +=0.1;
echo $o;
echo "<hr>";
echo "<br>intval($o) = ".intval($o);
if(intval($o)){
print(" true");
}else{
print(" false");
}
来源:http://www.cndong.cn/php-built-in-function-intval-the-use-of-inappropriate-analysis-of-security-vulnerabilities.html