清空文件内容

rm 做的只是删除了文件的 inode,并没有删除数据块,想要彻底删除,可以通过 shred, wipe, dd 来解决此问题。

使用一个叫 shred 的工具,该工具包含在 coreutils 中:
# shred file1 file2 file3
# shred /dev/sda7
# shred -vfz -n 100 /dev/sda

-n:重复以上动作 100 次
-z:使用零覆盖数据
-f:强制执行,如果磁盘没有写权限
-v:verbose
Continue reading

logrotate 中几个重要指令的理解

1.create:create mode owner group Immediately after rotation (before the postrotate script is run) the log file  is  created  (with  the  same name as the log file just rotated).  mode specifies the mode for the log file in octal (the same as chmod(2)), owner specifies the user  name  who  will own the log file, and group specifies the group the log file will belong to. Any of the log file attributes may be omitted, in which case those attributes  for  the  new  file will  use  the  same  values  as the original log file for the omitted attributes. This option can be disabled using the nocreate option.

以下面这个为例:
$ cat /etc/logrotate.conf
/var/log/test.log {
        size 1M
    create 666 jaseywang jaseywang
}
$ sudo logrotate /etc/logrotate.conf

可以通过下面这个实验来验证,开三个窗口,分别执行:
# while true;do cat /dev/zero  > /var/log/test.log ;done
# logrotate   /etc/logrotate.conf
# ll /var/log/test.log*

也就是说 logrotate 之后生成的 file.log 新文件的权限,用户,用户组,执行了 logrotate 之后,该日志文件对应的服务会向 test.log.1 文件继续写入而不是向 test.log 写入。
Continue reading

“去除” ls 显示的文件后面的波浪符号(~)

ls 会发现列出的文件除了我们想看的 file,通常还会有一个 file~ 文件,每次看到确实蛮烦人的,通过加 -B 参数可以解决此类问题:
alias ls='ls -lB –color=auto –group-directories-first'

"-B, –ignore-backups do not list implied entries ending with ~"

当然,要真正的删除可以使用下面的方式:
# find / -name "*~" -type f -exec rm {} \;
 

Avahi-daemon 问题

CentOS/Ubuntu 默认会开启 avahi-daemon,这玩意在服务器上显然是没用的,会占用大概 250KB 的内存,最重要的是会开 5353 和 32768 两个端口。

在 Ubuntu 下禁用:
# vim /etc/default/avahi-daemon
AVAHI_DAEMON_DETECT_LOCAL=0
# sed -i [email protected] on (filesystem and started dbus)@start on (never and filesystem and started dbus)@ /etc/init/avahi-daemon.conf
# vim /etc/avahi/avahi-daemon.conf

use-ipv4=no

CentOS 下:
# chkconfig avahi-dnsconfd off
# chkconfig avahi-daemon off

以上都不如直接卸了爽:
# /etc/init.d/avahi-daemon stop
# update-rc.d -f avahi-daemon remove
# apt-get remove avahi-daemon

 

关于 sudo 的两个错误

$ sudo echo 1 > /proc/sys/net/ipv4/ip_forward
bash: /proc/sys/net/ipv4/ip_forward: Permission denied

权限问题,但是使用了 sudo 了,为什么权限还是不行?
G 了之后发现,">"/">>" 也就是重定向的这两个符号也是 bash 的命令,sudo 之后只有 echo 有了 root 权限,> 并没有 root 权限。几种解决方式。

1.转变为 root 之后执行

$ su -

2.通过 sh -c 执行

$ sudo sh -c 'echo 1 > /proc/sys/net/ipv4/ip_forward'
-c:Read commands from the command_string operand. Set the value of special parameter 0 (see  Special  Parameters  )  from  the value of the command_name operand and the positional parameters ($1, $2, and so on) in sequence from the remaining argument operands. No commands shall be read from the standard input.

3.pipe + tee

$ echo "1 " | sudo tee /proc/sys/net/ipv4/ip_forward

注意:tee 还有个 -a 选项,append 的意思,等同于 ">>",不加参数即 ">"


Continue reading