当前位置:  操作系统/服务器>linux
本页文章导读:
    ▪linux中分区挂载和LABEL的指定      让Linux开机就挂载分区,有两种方法,一种是fstab,另一种是rc.local,我比较喜欢前一种。 注意: fstab是在开机时就挂载,所以你要注意是否你的分区位于某个需要特别驱动程序的设备后,.........
    ▪chmod -R 755 加权限后的修复方法      首先,遍历文件系统的C程序a.c:   代码如下: #include <sys/stat.h> #include <ftw.h> int list(const char *name, const struct stat *status, int type) {    if(type == FTW_NS)     return 0;     printf("%s 0%3o\n".........
    ▪学习linux设置定时任务的crontab命令      学习linux设置定时任务的crontab命令。 定时向ntp服务进行时间同步,并记录日志。 首先,建立一个日志文件: [root@icnote ~]#touch /var/log/upClock.log   //建立更新log文件 [root@icnote ~]#chmod 740 /var/log.........

[1]linux中分区挂载和LABEL的指定
    来源: 互联网  发布时间: 2013-12-24

让Linux开机就挂载分区,有两种方法,一种是fstab,另一种是rc.local,我比较喜欢前一种。

注意:
fstab是在开机时就挂载,所以你要注意是否你的分区位于某个需要特别驱动程序的设备后,如RAID卡,因为Linux挂载时,有可能这个设备的驱动程序还没有起,这样使挂不上的
rc.local是在开结束后最后一个执行(因为在/etc/rc.*里他一直是S99的),如果遇到如上驱动程序的问题,你大可不必担心,因为驱动程序肯定早就起来了,所以你要注意的是你的应用是否有可能被排在了mount动作前。

我们来看下LABEL。

提到LABEL是因为,对于附加的硬盘我经常直接用设备名称来mount,当然是没什么问题了,但是当我希望他开机就挂好时就显得不是那么严谨了。为什么呢,因为我经常忘了拔U盘或者其他block设备,导致他们占用了原先我想挂载的那个设备的名称,比如你有一个内置硬盘是/dev/sda,可能这种情况下它变成了/dev/sdb,而那个U盘变成了/dev/sda,这样等到系统启动完毕,你就会发现挂载的不对了,或者根本系统就起不来(因为它还有可能占用了grub中的hd0,这是另外一个现象了)。

所以呢,用LABEL,并把它加入到fstab里就能更好地解决这个问题,因为Linux会按照LABEL去挂载,而不是设备名称,如果有同名的LABEL,我理解他挂载最先找到的那个分区。

设定swap分区的LABEL: mkswap -L LABEL名称 /dev/分区名称
挂载fstab中的swap: swapon -a

设定普通分区的LABEL: tune2fs -L LABEL名称 /dev/分区名称
查看普通分区的LABEL: tune2fs -l /dev/分区名称


    
[2]chmod -R 755 加权限后的修复方法
    来源: 互联网  发布时间: 2013-12-24

首先,遍历文件系统的C程序a.c:
 

代码如下:

#include <sys/stat.h>
#include <ftw.h>
int list(const char *name, const struct stat *status, int type)
{
   if(type == FTW_NS)
    return 0;

    printf("%s 0%3o\n", name, status->st_mode & 07777);
return 0;
 }

int main(int argc, char *argv[])
{
    if(argc == 1)
   ftw(".", list, 1);
    else
   ftw(argv[1], list, 1);
   exit(0);
}

编译成a.out可执行文件,我这里不是一次遍历整个根(/)目录,因为不是所有目录的权限都需要改,比如说/proc目录、再比如为了装oracle建的/u01目录。我只扫描我认为需要修改权限的目录,如下执行:./a.out  /bin  >bin.txt … 每个目录的文件及权限保存在独立的文件中,下面是我新装as 4系统下/bin目录下的文件权限(bin.txt的部分内容):
/bin 0755
/bin/traceroute6 04755
/bin/setserial 0755
/bin/rview 0755
/bin/touch 0755
/bin/awk 0755
/bin/mt 0755
/bin/ash 0755
… …

然后写个更改权限的简单脚本chgperm.sh:
 

代码如下:

#!/bin/sh
if [ $# != 1 ]
then
 echo Usage : $0 \<filename\>
  exit
fi

PERMFILE=$1
cat $PERMFILE | \
while read LINE
do
   FILE=`echo $LINE | awk '{print $1}'`
   PERM=`echo $LINE | awk '{print $2}'`
   chmod $PERM $FILE
done

echo change perm finished!

如下执行即可:
sh  chgperm.sh  bin.txt
… …

如果系统中有getfacl 的命令的话,脚本都不用写了,直接用getfacl 获取正常系统的文件权限,到出问题的机器上用 setfacl 恢复。

在一台别的系统上
getfacl -R / > acl.bak

把acl.bak的文件copy过来
setfacl --restore acl.bak


    
[3]学习linux设置定时任务的crontab命令
    来源: 互联网  发布时间: 2013-12-24

学习linux设置定时任务的crontab命令。
定时向ntp服务进行时间同步,并记录日志。

首先,建立一个日志文件:
[root@icnote ~]#touch /var/log/upClock.log   //建立更新log文件
[root@icnote ~]#chmod 740 /var/log/upClock.log   //修改权限
[root@icnote ~]#crontab -e   //编辑root用户的默认crontab
输入以下命令:
0 23 * * 0 ntpdate cn.pool.ntp.org >> /var/log/upClock.log
表示每个星期天的晚上23点同步时间 ,保存就ok了。
crontab 格式
*****task

*号按顺序排列,分别代表
首先,建立一个日志文件:
第一颗* 0~59分钟
第二颗* 1~23小时
第三颗* 1~31日
第四颗* 1~12月
第五颗* 0~6星期(0表示星期日)
task 表示要执行的操作  比如 ntpdate 10.1.0.41

附一些例子,供大家学习。
30 21* * * /apps/bin/cleanup.sh
上面的例子表示每晚的2 1 : 3 0运行/ a p p s / b i n目录下的c l e a n u p . s h。
45 4 1,10,22 * * /apps/bin/backup.sh
上面的例子表示每月1、1 0、2 2日的4 : 4 5运行/ a p p s / b i n目录下的b a c k u p . s h。
10 1 * * 6,0 /bin/find -name “core” -exec rm {} ;
上面的例子表示每周六、周日的1 : 1 0运行一个f i n d命令。
0,30 18-23 * * * /apps/bin/dbcheck.sh
上面的例子表示在每天1 8 : 0 0至2 3 : 0 0之间每隔3 0分钟运行/ a p p s / b i n目录下的d b c h e c k . s h。
0 23 * * 6 /apps/bin/qtrend.sh
上面的例子表示每星期六的11 : 0 0 p m运行/ a p p s / b i n目录下的q t r e n d . s h

实现定时task的两种方式
一种是编辑一个文件,用crontab 载入
一种是用crontab -e 直接编辑生效

例子:
每隔以一分钟往一个文件打入一堆字符
先vi crontab1
 

代码如下:
#every minute echo char to file
1-59 * * * * echo `date`” mysql” >> /opt/shuju/dazi.txt
 

最好加上注释
这样就能明确当前的这个定时任务的目的
然后 crontab crontab1载入crontab1这个定时任务

另外一种方法:
 

代码如下:
crontab -e
#every minute echo char to file
1-59 * * * * echo `date`” tian” >> /opt/shuju/da.txt

date 用单引号,是表示如果date是一个命令,就作为命令执行
如果你直接用date ,那么输出的是”date”这个字符串,而不是date这个命令的执行结果

>> 是附加到文件末尾,而>是直接覆盖文件

如果crontab -e无法编辑
那么是你的环境变量没有配置
请你进入 vi /etc/profile
加上
 

代码如下:
EDITOR=vi
export EDITOR

crontab -l 列出所有定时任务

如何才能删除一个定时任务
可以这样做:
crontab -e ,然后,注释掉对应定时任务语句即可。
例如,删除刚刚定义的定时任务
#every minute echo char to file
1-59 * * * * echo `date`” oracle” >> /opt/shuju/tj.txt
只需要
#every minute echo char to file
#1-59 * * * * echo `date`” oracle” >> /opt/shuju/tj.txt

crontab -r 会删除所有的定时任务,使用时务必谨慎。


    
最新技术文章:
▪linux系统中的列出敏感用户的脚本代码
▪a10 config backup for aXAPI
▪一键备份gitolite服务器的Shell脚本
▪nagios 分发文件实现代码
▪阿里云云服务器Linux系统更新yum源Shell脚本
▪一个监控LINUX目录和文件变化的Shell脚本分享
▪Linux下实现SSH免密码登录和实现秘钥的管理、...
▪Shell正则表达式之grep、sed、awk实操笔记
▪3个备份系统文件并邮件发送的Shell脚本分享
▪CentOS 6.3下给PHP添加mssql扩展模块教程
▪监控网站是否可以正常打开的Shell脚本分享
▪shell脚本编程之if语句学习笔记
▪shell脚本编程之循环语句学习笔记
▪shell脚本编程之case语句学习笔记
▪Shell脚本实现的阳历转农历代码分享
▪Shell脚本实现复制文件到多台服务器的代码分...
▪Shell脚本实现批量下载网络图片代码分享
▪Shell脚本实现检测文件是否被修改过代码分享
▪Shell脚本数组用法小结
▪Shell脚本批量重命名文件后缀的3种实现
▪C语言实现的ls命令源码分享
▪Linux下查找后门程序 CentOS 查后门程序的shell脚...
▪Shell 函数参数
▪linux shell 自定义函数方法(定义、返回值、变...
▪Shell实现判断进程是否存在并重新启动脚本分...
▪Shell脚本break和continue命令简明教程
▪Shell脚本函数定义和函数参数
▪让代码整洁、过程清晰的BASH Shell编程技巧
▪shell常用重定向实例讲解
▪awk中RS、ORS、FS、OFS的区别和联系小结
 


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3