Linux 有问必答:如何解决 Linux 上的 Wireshark 界面僵死

问题: 当我试图在 Ubuntu 上的 Wireshark 中打开一个 pre-recorded 数据包转储时,它的界面突然死机,在我运行 Wireshark 的终端出现了下面的错误和警告。我该如何解决这个问题?

(wireshark:3480): GLib-GObject-WARNING **: invalid unclassed pointer in cast to 'GObject'
(wireshark:3480): GLib-GObject-CRITICAL **: g_object_set_qdata_full: assertion 'G_IS_OBJECT (object)' failed
(wireshark:3480): GLib-GObject-WARNING **: invalid unclassed pointer in cast to 'GtkRange'
(wireshark:3480): Gtk-CRITICAL **: gtk_range_get_adjustment: assertion 'GTK_IS_RANGE (range)' failed
(wireshark:3480): GLib-GObject-WARNING **: invalid unclassed pointer in cast to 'GtkOrientable'
(wireshark:3480): Gtk-CRITICAL **: gtk_orientable_get_orientation: assertion 'GTK_IS_ORIENTABLE (orientable)' failed
(wireshark:3480): GLib-GObject-WARNING **: invalid unclassed pointer in cast to 'GtkScrollbar'
(wireshark:3480): GLib-GObject-WARNING **: invalid unclassed pointer in cast to 'GtkWidget'
(wireshark:3480): GLib-GObject-WARNING **: invalid unclassed pointer in cast to 'GObject'
(wireshark:3480): GLib-GObject-CRITICAL **: g_object_get_qdata: assertion 'G_IS_OBJECT (object)' failed
(wireshark:3480): Gtk-CRITICAL **: gtk_widget_set_name: assertion 'GTK_IS_WIDGET (widget)' failed

Wireshark 是一个基于 GUI 的数据包捕获和嗅探工具。该工具被网络管理员普遍使用,网络安全工程师或开发人员对于各种任务的数据包级的网络分析是必需的,例如在网络故障,漏洞测试,应用程序调试,或逆向协议工程是必需的。 Wireshark 允许实时记录数据包,并通过便捷的图形用户界面浏览他们的协议首部和有效负荷。

Linux 有问必答:如何解决 Linux 上的 Wireshark 界面僵死
Linux 有问必答:如何解决 Linux 上的 Wireshark 界面僵死

这是 Wireshark 的 UI,尤其是在 Ubuntu 桌面下运行时,当你向上或向下滚动分组列表视图时,或开始加载一个 pre-recorded 包转储文件时,有时会挂起或冻结,并出现以下错误。

Linux 有问必答:如何解决 Linux 上的 Wireshark 界面僵死
Linux 有问必答:如何解决 Linux 上的 Wireshark 界面僵死

显然,这个错误是由 Wireshark 和叠加滚动条之间的一些不兼容造成的,在最新的 Ubuntu 桌面还没有被解决(例如,Ubuntu 15.04 的桌面)。

一种避免 Wireshark 的 UI 卡死的办法就是 暂时禁用叠加滚动条。在 Wireshark 上有两种方法来禁用叠加滚动条,这取决于你在桌面上如何启动 Wireshark 的。

命令行解决方法

叠加滚动条可以通过设置”LIBOVERLAY_SCROLLBAR“环境变量为“0”来被禁止。

所以,如果你是在终端使用命令行启动 Wireshark 的,你可以在 Wireshark 中禁用叠加滚动条,如下所示。

打开你的 .bashrc 文件,并定义以下 alias。

alias wireshark="LIBOVERLAY_SCROLLBAR=0 /usr/bin/wireshark"

桌面启动解决方法

如果你是使用桌面启动器启动的 Wireshark,你可以编辑它的桌面启动器文件。

$ sudo vi /usr/share/applications/wireshark.desktop

查找以”Exec”开头的行,并如下更改。

Exec=env LIBOVERLAY_SCROLLBAR=0 wireshark %f

虽然这种解决方法可以在系统级帮助到所有桌面用户,但升级 Wireshark 后被覆盖就没用了。如果你想保留修改的 .desktop 文件,如下所示将它复制到你的主目录。

$ cp /usr/share/applications/wireshark.desktop ~/.local/share/applications/

via: http://ask.xmodulo.com/fix-wireshark-gui-freeze-linux-desktop.html

作者:Dan Nanni 译者:strugglingyouth 校对:wxy

本文由 LCTT 原创翻译,Linux中国 荣誉推出

Linux:Linux 文件权限的设置技巧

  Windows系统其实和Linux系统有相似的地方,Windows系统文件、目录的属性有只读、隐藏,而Linux也一样。

  Linux中,每一个文件都具有特定的属性。主要包括文件类型和文件权限两个方面。可以分为5种不同的类型:普通文件、目录文件、链接文件、设备文件和管道文件。

  所谓的文件权限,是指对文件的访问权限,包括对文件的读、写、删除、执行。Linux 是一个多用户操作系统,它允许多个用户同时登录和工作。因此 Linux 将一个文件或目录与一个用户或组联系起来。访问控制列表(ACL:Access Control List)为计算机提供更好的访问控制,它的作用是限制包括root用户在内的所有用户对文件、资源或者套接字的访问。下面就来教大家简单的设置方法。

  步骤1 检查系统核心

  首先检查你的Linux系统的核心是否有支持ACL的功能。因为Linux系统并不是每一个版本的核心都有支持ACL的功能,而最简单的方法就是检查系统目前的核心能否支持:

[root@mail /]# cat /boot/config-kernel-version | grep -i ext3
CONFIG_EXT3_FS=m
CONFIG_EXT3_IDEX=y
CONFIG_EXT3_FS_XATTR_SHARING=y
CONFIG_EXT3_FS_XATTR_USER=y
CONFIG_EXT3_FS_XATTR_TRUSTED=y
CONFIG_EXT3_FS_ACL=y

  此时如果能看到上面的几项则表示已经编译到核心中,ext3文件系统已支持ACL功能,这些功能在编译核心选项中都可以找到。如果编译时找不到,可以到ACL的官方网站来安装Kernel(acl.bestbits.at/)。

  步骤2 挂载分区

  你可以用下列的方式挂载分区并启用ACL:

#mount -t ext3 -o acl /dev/sda1 /fs1

  你也可以直接写在/etc/fstab文件中,这样就可以在开机后支持ACL功能:

#vi /etc/fstab

  步骤3 设置ACL权限

  ACL常常针对个别用户来进行设置,下面是多个不同的例子:

  例如需要创建test1、test2、test3三个用户,可以先用root身份登录系统,然后执行以下命令分别创建三个用户名和密码:

[root@mail root]#adduser test1
[root@mail root]#adduser test2
[root@mail root]#adduser test3
[root@mail root]#passwd test1
[root@mail root]#passwd test2
[root@mail root]#passwd test3

  然后mount一个ext3文件到目录/fs1:

[root@mail root]#mount -t ext3 -o acl /dev/sda1 /fs1

  再将test1 建立的文件设置读写的权限给test2 :

[root@mail root]#chmod -R 777 /fs1

  让所有的用户都能增加文件到目录的权限:

  先用test1登录系统,执行命令:

[test1@mail test1]# cd /fs1
[test1@mail fs1]# echo "Create by test1" > test1.txt
[test1@mail fs1]# chmod go-r test1.txt
[test1@mail fs1]# ll test1.txt
-rw------- 1 test1 test1 17 Jul 14 22:11 test1.txt

  而如下操作则可以让除了test1有读写的权限外其他人没有读写test1.txt的权限(root除外),先用test2 登录系统后执行以下命令:

[test2@mail test2]# cd /fs1
[test2@mail fs1]# cat test1.txt
cat : test1.txt Permission denied

  接着用test1登录系统,执行如下命令:

[test1@mail fs1]# setfacl -m u:test2:rw test1.txt

  这样就修改权限允许test2 有这个文件的读写权限。再看一下它的文件属性的变化:

[test1@mail fs1]# ll
-rw-rw-r--+ 1 test1 test1 10 Feb 16 13:52 test1.txt

  会看到后面多了一个“+”,表示这个文件使用ACL的属性设置,再用命令getfacl来看ACL的文件属性设置:

[test1@mail fs1]# getfacl test1.txt
# file: test1.txt
# owner: test1
# group: test1
user::rw-
user:test2:rw-
group::rw-
mask::rw-
other::r--

  可以看到 test2 有权限读写这个文件。

  我们再用test2登录系统执行以下命令,看看发生了什么?

[test2@mail test2]# cd /fs1
[test2@mail fs1]# cat test1.txt
Create by test1

  原来test2可以读取test1.txt文件了。

[test2@mail fs1]# echo "Modify by test2" >> test1.txt
[test2@mail fs1]# cat test1.txt
Create by test1
Modify by test2

  现在test2也可以修改test1.txt文件了。

  接着用test3 登录系统:

[test3@mail test3]# cd /fs1
[test3@mail fs1]# cat test1.txt
cat : test1.txt Permission denied

  嘿嘿,除了test1、test2外没有其他用户有读写test1.txt的权限(root 除外)。

  看着虽然有点晕,其实命令就是这么一两条,主要是把各种情况给大家讲清楚,这样,大家在使用Linux中才会发现,比起脆弱的Windows的权限防护,Linux实在是做得相当不错!

Linux:ubuntu 12.04 安装 Nginx+PHP5 (PHP-FPM) +MySQL主机详解

很长时间没有在 Ubuntu 安装实际操作安装web服务器了,今天想练练手,在虚拟机上做个试验,我不该保证你也一定会成功,做参考吧!

现象我介绍一下基本系统情况:

  • 虚拟机(Oracle VM)
  • 操作系统 Ubuntu 12.04 server (该系统安装时我只选择了ssh server)
  • 真机与虚拟机使用桥接方式
  • 设置为静态IP:192.168.1.208 适情况个人设置

1.首先为了安装方便,我切换到root账户,输入命令:

sudo su

2 安装 MySQL 5

apt-get install mysql-server mysql-client

系统会提示你设置密码,输入两次密码:

New password for the MySQL “root” user: (输入密码) Repeat password for the MySQL “root” user: (再输入一次)

3 安装 Nginx

apt-get install nginx

启动Nginx服务:

/etc/init.d/nginx start

浏览器输入网址看看是否正常:http://192.168.1.208(修改成你设置的静态IP)

网页显示”Welcome to nginx!”说明已经安装成功并运行。

4 安装 PHP5

apt-get install php5-fpm

5 设置 nginx ,修改文件:

vi /etc/nginx/nginx.conf

修改下面两行代码:

worker_processes  4;
keepalive_timeout   2;

虚拟主机配置文件修改:

vi /etc/nginx/sites-available/default

修改代码如下面的显示:

server {
        listen   80; ## listen for ipv4; this line is default and implied
        listen   [::]:80 default ipv6only=on; ## listen for ipv6
        root /usr/share/nginx/www;
        index index.php index.html index.htm;
        # Make site accessible from http://localhost/
        server_name _;
        location / {
                # First attempt to serve request as file, then
                # as directory, then fall back to index.html
                try_files $uri $uri/ /index.html;
        }
        location /doc {
                root /usr/share;
                autoindex on;
                allow 127.0.0.1;
                deny all;
        }
        #error_page 404 /404.html;
        # redirect server error pages to the static page /50x.html
        #
        error_page 500 502 503 504 /50x.html;
        location = /50x.html {
                root /usr/share/nginx/www;
        }
        # proxy the PHP scripts to Apache listening on 127.0.0.1:80
        #
        #location ~ \.php$ {
        #       proxy_pass http://127.0.0.1;
        #}
        # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
        #
        location ~ \.php$ {
                try_files $uri =404;
                fastcgi_pass 127.0.0.1:9000;
                fastcgi_index index.php;
                include fastcgi_params;
        }
        # deny access to .htaccess files, if Apache's document root
        # concurs with nginx's one
        #
        location ~ /\.ht {
                deny all;
        }
}

重新加载nginx:

/etc/init.d/nginx reload

创建一个探针文件,测试:

vi /usr/share/nginx/www/info.php

写入内容

然后再打开浏览器输入:http://192.168.1.208/info.php

会显示一下支持的模块,增加模块支持,输入下面的命令查询PHP模块:

apt-cache search php5

会显示模块和模块功能解释(英文的,需要一定英文能力,谷歌或百度翻译一下,了解) 例如输入下面安装你要的模块:

apt-get install php5-mysql php5-curl php5-gd php5-intl php-pear php5-imagick php5-imap php5-mcrypt php5-memcache php5-ming php5-ps php5-pspell php5-recode php5-snmp php5-sqlite php5-tidy php5-xmlrpc php5-xsl

安装完毕之后重启php5-fpm

/etc/init.d/php5-fpm restart

参考:http://wiki.ubuntu.org.cn/Nginx

来自:http://imcn.me/html/y2012/11870.html

Linux:10 个你可能没用过的 Linux 命令

  对铁杆系统管理员或Linux工程师来说,下面这些Linux命令行技巧也许多数觉得眼熟。而对Linux普通用户而言,这些Linux命令行技巧则不见得用过。  1. 使用pgrep快速查找PID  pgrep会遍历当前运行的进程,列出符合查找条件的进程ID。

pgrep ssh

  这条命令会列出所有与ssh有关的进程ID。  2. 执行上次执行过的命令  这个标题有些绕口,但下面这条命令的确能做到这一点。

!!

  该命令会执行你在命令行中执行过的上一条命令。  3. 执行最近一次以特定字母开头的命令  如欲执行命令行历史中一个s开头的命令,可以使用如下命令:

!s

  该命令会执行最近一次在命令行中用过的且以字母s开头的命令。  4. 反复执行一个命令并在屏幕上输出  watch会反复执行一个命令,并在屏幕上打印输出。你可以借此观察一段时间内程序的输出变化。程序(即示例中的ls -l)默认每2秒运行一次.watch命令与tail命令非常相似。

watch -d ls -l

  这条命令会监视当前目录,如有文件增删或修改,就会高亮显示目录变化。  5. 在VI/VIM中快速保存  要忙着办其他事情时,可以使用Shift + zz(即按住换档键,敲两下z键)快速退出vi插入模式。  6. 快速退出终端会话  使用CTRL+D可以快速退出终端会话。  7. 返回上一次所在的目录  使用命令cd -可以返回上一次所在的目录:  8. 巧妙创建父目录  命令mkdir -p /home/adam/make/all/of/these/directories/会根据需要创建不存在的目录。何苦要浪费时间做这种傻事呢:mkdir make ; cd make ; mkdir all ; cd all ; mkdir of ; cd of … 切中要害,使用

mkdir -p!

  9. 删除一整行  输入了一长串命令但又不想要了,可以使用CTRL+U删除这一整行。(译注:光标不在行尾时,可以先用CTRL+E定位到行尾。)  10. 设定文件的时间戳  命令touch -c -t 0801010800 filename.c会将文件的时间戳设定为2008-01-01 8:00,格式为(YYMMDDhhmm)。  你还能想到哪些不为人熟知的Linux命令?

Linux:究竟什么是开发人员眼中最好的代码编辑器?

如果我们把不同的程序开发人员比作三国演义中的各路诸侯大将的话,那么代码编辑器绝对可以称之我们手中的神兵利器,不同类型的开发人员使用的”兵器“也大有 不同。好比兵器来说,没有绝对强的,也没有绝对好的,每一中兵器都有不同的优点和缺点,虽说俗话说的好,一寸长,一寸强,不过如果你没事去那都提着”关老 爷“的“青龙偃月刀”得瑟,貌似也不是很方便。那么对于我们这些开发人员来说,究竟什么样的代码编辑器是最好的呢?

究竟什么是开发人员眼中最好的代码编辑器?

在今天的文章中,我们将从以下几个方面来比较各种类型的代码编辑器,评判指标包括:

  • 友好度
  • 功能性
  • 扩展性
  • 界面/体验
  • 跨平台
  • 价格

大师级别

vi

vi 对于使用过unix的朋友来说,绝对是再熟悉不过的代码编辑器,有多少伟大的程序和代码是由vi开发编辑的啊,既然是大师级别的代码编辑器,对于我们这些 普通人来说,只能说是好听不好用,基本上我周围的朋友使用vi的人大都是因为操作系统没有安装其它编辑器,也懒的花时间去安装。当然使用也相当麻烦了,你 得记住一大堆的命令,如果你记不住,唯一能做的就是关闭。我现在还记得我初次使用vi的时候,自己老老实实的打印了一张命令表,贴在墙上随时参考使用。

究竟什么是开发人员眼中最好的代码编辑器?

Vim

Vim 是一个类似于Vi的文本编辑器,不过在Vi的基础上增加了很多新的特性,Vim普遍被推崇为类Vi编辑器中最好用的一个。最早1991年发布,赢得了开源 世界的欢迎。和其它的代码编辑器相比不同的是命令行的工作方式。和简单的输入代码不同,你选择输入和选择文字,运行正则表达式的搜索,并且使用更多其它的 命令。vim使用脚本和插件可以变得非常适合扩展。可以支持GUI或者命令行。同时可以支持所有的操作系统。在大多数的Linux系统都预先装。

究竟什么是开发人员眼中最好的代码编辑器?

Emacs

Emacs 开发自1970,现在依然开发。这个编辑器拥有扩展,并且可以加载自定义的类库。它是第一个实现了代码高亮,自动缩进和多编程语言支持的代码编辑器。和 Vim一样,跨平台同时支持图形化界面和命令行。这个编辑器和LISP解析器整合,通过这个方式高手们可以修改它到极致。同时它是免费软件并且开源。

究竟什么是开发人员眼中最好的代码编辑器?

专业级别

Eclipse

Eclipse 是开发java应用的必备代码编辑器。这个IDE整合了插件结构,可以使得它轻松的支持其他编程语言。它拥有C/C++,Ruby,PHP和其它语言开 发。类似Google的功能开发自己版本的开发套件,所以可以很简单的创建Android和App引擎。免费并且开源。

究竟什么是开发人员眼中最好的代码编辑器?

Apatana Studio

Aptana 是一个专门为富客户端web应用开发设计的代码编辑器。基于Eclipse,并且帮定了强大的新工具。支持最流行的web开发语 言:PHP,javascript,HTML,css,Ruby,Python和其它更多插件。它拥有Git整合,能够部署你得应用到远程服务器。和 Eclipse一样,Aptana是免费和开源。

究竟什么是开发人员眼中最好的代码编辑器?

Netbeans

Netbean 是另外一个开发欢迎,和Eclipse一样,可以扩展支持其它的编程语言,PHP,Python,C/C++和其它。可以运行在 Linux,windows和OSX上。Netbeans可以快速的帮助你开发桌面应用,并且支持拖拽GUI,带来的负面影响就是性能差一些。但是这个 IDE免费并且开源

究竟什么是开发人员眼中最好的代码编辑器?

Dreamweaver

Dreamweaver 属于adobe应用套件之一,主要用来开发web应用。提供了最流行的web编程语言的支 持:PHP,ASP.Net,Javascript,HTML,CSS。 主要为了初学者方便的编程,支持所见即所得的编辑方式。可以方便的部署到服务器,并且可以用来开发jQuery移动应用。同时支持OSX和Window。 单一价格$399。当然买套件更加合算。

究竟什么是开发人员眼中最好的代码编辑器?

Visual Studio

visual studio是一个All-in-one的windows开发环境。支持大量的开发语言(C/C++,C#,VB.NET和F#)。可以用来开发桌面应 用,移动和web。拥有强大自动补齐,行内文档,错误效验,debugging,表单设计,数据库schema设计。价格从$500开始,但是一个快速版 本的visual studio可以免费使用,我们可以使用有限的开发特性。

究竟什么是开发人员眼中最好的代码编辑器?

Xcode

Xcode 是一个Apple的解决方案,用来开发OSX和iOS应用。支持C,C++,Objective-C,Objective- C++,Java,AppleScript,Python和Ruby。使用Xcode你可以书写,debug和预览代码。提供了GUI builder和一个移动设备模拟器用来测试iOS应用。IDE基于开源工具例如GNU Debugger和Apple LLVM compiler。Xcode曾经需要付费,但是现在免费提供给大家使用。

究竟什么是开发人员眼中最好的代码编辑器?

Coda 2

Coda是一个all-in-one的web开发人员工具。包含了FTP文件传输,代码导航,代码缩放,终端GIT整合,Mysql管理和其它。使用新的Coda2发布,你可以使用ipad作为一个预览屏幕。普通版本价格$99,但是你可以得到$75美元的折扣价。

究竟什么是开发人员眼中最好的代码编辑器?

Linux:RedHat/CentOS利用iso镜像做本地yum源

CentOS是完全免费的,它的yum可以直接使用;而RedHat的yum则需要注册付费才能使用,如果不这样则有两种解决方案,也可以说是三种。

1. 利用iso镜像做本地yum源

2. 利用光盘做本地yum源

3. 利用Centos的在线地址做本地yum源

在这里用iso或者光盘做本地yum源的方法是差不多的,只是用光盘的话Linux系统会自动挂载,用iso镜像的或需要手动挂载,这里就说挂载iso的方法吧。

【一】用本地文件创建本地yum源

1. 创建iso存放目录和挂载目录

mkdir /mnt/iso
mkdir /mnt/cdrom

2. 将iso镜像文件上传到/mnt/iso文件夹下

3. 将/mnt/iso/下的iso文件挂载到/mnt/cdrom目录

mount -o loop /mnt/iso/XXXXX.iso /mnt/cdrom 

    <注:挂载完之后对其操作会提示设备繁忙,此时需要umount解开挂载才行>

    查看是否挂载成功: 

df -h

    <用来查看系统中所有挂载的,mount也可以>

4.<最关键的一步>如果/etc/yum.repos/下面有其它的*.repo文件,先创建个文件夹,将这些*.repo先转移到文件夹中,自己写一个.repo的文件

mkdir /etc/yum.repos.d/bak
mv *.repo /etc/yum.repos.d/bak 

 然后创建自己的.repo文件

vi myself.repo

 内容如下:

[base]
name=RedHat
#注:这里的baseurl就是你挂载的目录,在这里是/mnt/cdrom
baseurl=file:///mnt/cdrom
#注:这里的值enabled一定要为1
enabled=1
gpgckeck的值无所谓
gpgckeck=0
#注:这个你cd /mnt/cdrom/可以看到这个key,这里仅仅是个例子
gpgkey=file:///mnt/cdrom/RPM-GPG-KEY-CentOS-5                    

5. 测试:

yum clean all
yum install vim*

 【二】用CentOS的网址创建yum源

      只需要将/etc/yum.repos.d/下面的*.repo文件放在bak文件夹下,创建自己的.repo文件,如以下配置

[base]
name=RedHat
baseurl=http://mirrors.163.com/centos/6/os/$basearch/
enabled=1
gpgcheck=0
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-6

      浏览器中可以访问网址:http://mirrors.163.com/centos    后面的安装你需要的CentOS的版本来配置

【其它】

      yum grouplist  显示的结果为已经安装的组包,未安装的组包,语言包等。

    在安装openmeeting的时候在RedHat6.2上就是用的CentOS 6的yum在线源,而且成功安装了Office/Productivity组包

    That’s all …

Linux:Linux应用总结:自动删除n天前日志

  Linux 是一个很能自动产生文件的系统,日志、邮件、备份等。虽然现在硬盘廉价,我们可以有很多硬盘空间供这些文件浪费,让系统定时清理一些不需要的文件很有一种 爽快的事情。不用你去每天惦记着是否需要清理日志,不用每天收到硬盘空间不足的报警短信,想好好休息的话,让我们把这个事情交给机器定时去执行吧。

1.删除文件命令:

find 对应目录 -mtime +天数 -name “文件名” -exec rm -rf {} \;

  实例命令:

find /opt/soft/log/ -mtime +30 -name “*.log” -exec rm -rf {} \;

  说明:将/opt/soft/log/目录下所有30天前带”.log”的文件删除。

  具体参数说明如下:

find:linux的查找命令,用户查找指定条件的文件;

/opt/soft/log/:想要进行清理的任意目录;

-mtime:标准语句写法;

+30:查找30天前的文件,这里用数字代表天数;

“*.log”:希望查找的数据类型,”*.jpg”表示查找扩展名为jpg的所有文件,”*”表示查找所有文件,这个可以灵活运用,举一反三;

-exec:固定写法;

rm -rf:强制删除文件,包括目录;

{} \; :固定写法,一对大括号+空格+\+;

2.计划任务:

  若嫌每次手动执行语句太麻烦,可以将这小语句写到一个可执行shell脚本文件中,再设置cron调度执行,那就可以让系统自动去清理相关文件。

2.1创建shell:

touch /opt/soft/bin/auto-del-30-days-ago-log.sh

chmod +x auto-del-30-days-ago-log.sh

  新建一个可执行文件auto-del-30-days-ago-log.sh,并分配可运行权限

2.2编辑shell脚本:

vi auto-del-30-days-ago-log.sh

  编辑auto-del-30-days-ago-log.sh文件如下:

#!/bin/sh

find /opt/soft/log/ -mtime +30 -name “*.log” -exec rm -rf {} \;

  ok,保存退出(:wq)。

2.3计划任务:

#crontab -e

  将auto-del-30-days-ago-log.sh执行脚本加入到系统计划任务,到点自动执行

  输入:

10 0 * * * /opt/soft/log/auto-del-7-days-ago-log.sh >/dev/null 2>&1

  这里的设置是每天凌晨0点10分执行auto-del-7-days-ago-log.sh文件进行数据清理任务了。

  完成以上三步,你就再也不每天惦记是否硬盘空间满了,该清理日志文件了,再也不会受到服务器硬盘空间不足的报警信息了,放心的去看书喝咖啡去吧!

来自:http://www.cnblogs.com/peida/archive/2013/03/25/2980121.html

Linux:Debian 7.0 常见问题的处理方法

  随着社区Linux版本Debian7.0.0稳定版的发布,笔者也和很多Linux系统的爱好者一样,进行了下载以及安装使用。现就存在的一些小问题及解决办法进行整理编辑,希望能帮助更多的Linux爱好者们一同感受Linux操作系统带来的稳定以及魅力。

https://dn-linuxcn.qbox.me/data/attachment/album/201305/23/122831c3x2gxfjrg2cw8c1.jpg

1、时区设置问题

  Debian 7.0 在安装时尽管选择了中国时区以及非UTC时钟,但机器安装好启动后时间还是会发生错误,因此需要进行将时钟调整为当前时间,同时需要修改文件/etc/default/rcS,并在该文件中加入UTC=no参数。

2、普通用户使用KVM报错问题

  Debian 7.0 中普通用户使用virt-manager虚拟系统管理器时会报错,但切换到root用户又可以正常使用。其实这个问题是用户权限的问 题,virt-manager虚拟系统管理器需要libvirt组用户才可以正常使用和管理,因此用户只要执行useradd -g libvirt birdofprey 命令就可以正常使用该虚拟机管理工具了。

  命令模式如下:

useradd -g libvirt birdofprey

  其中birdofprey为需要使用virt-manager虚拟系统管理器工具的用户名。

3、在KVM中客户机使用NAT方式联网无法正常进行PPTP拨号以及FTP问题

  在KVM中客户机之前使用桥模式进行网络连接,PPTP拨号及FTP都没有问题,修改为NAT模式之后,KVM客户机使用PPTP拨号出现619错 误,访问FTP服务器也出现无法登录500错误。该问题存在的原因是因为PPTP方式的VPN使用了GRE协议,这个协议跟TCP/UDP是同一级的协 议。因为GRE协议没有端口的概念,LINUX不能像TCP/UDP那样IP伪装。所以,LINUX网关后面的pptp vpn客户机连接vpn时总会遇见这种那种的问题。也就是所谓pptp pass through  PPTP VPN协议 NAT穿透性问题!,解决该问题需要对Debian7的/etc/modules文件进行修改加入如下行内容:

    ip_nat_pptp     ip_conntrack_pptp     ip_conntrack_ftp     ip_nat_ftp

  这样iptables在每次启动的时候都自动加载以上4个NAT穿透功能模块。再次在KVM客户机中以NAT模式网络进行相关的PPTP拨号及FTP访问时早先存在的619及500错误得到解决。

4、GNOME3任务栏、标题栏过宽问题

  Debian 7.0 默认安装的是GNOME 3.4.2桌面系统,缺省状态下,用户会发现桌面系统的桌面任务栏及标题栏宽度太大,影响美观,同时也浪费屏幕显示的有效宽度,针对这个问题我们可以通过以下方式进行优化。

  任务栏优化:

  使用vi /usr/share/gnome-shell/theme/gnome-shell.css,直接找到如下行:

    #panel {     background-color: black;     font-weight: bold;     height: 1.28em;     }

  将原来的height:1.68em;修改为height:1.28em;按ALT+F2输入r,直接从起桌面应该就很好看了。

  标题栏的优化:

  在终端中直接输入如下内容:

    sed -i “/title_vertical_pad/s/value=\”[0-9]\{1,2\}\”/value=\”0\”/g” /usr/share/themes/Adwaita/metacity-1/metacity-theme-3.xml

  之后按ALT+F2输入r,直接从起桌面应该就好了。

5、安装GNOME-SHELL插件netspeed、Coverflow Alt-Tab网站报You do not appear to have an up to date version of GNOME3. You won’t be able to install extensions from here. See the about pagefor more information.错误问题。

  GNOME-SHELL作为GNOME3桌面系统的重要特性之一,给用户带来了很多不一样的感受和体验,其插件安装在3.6以后非常方便,只需要通过网页登录到网站将相应插件的相应开关打开到ON的位置,那么系统将自动为你在本地系统中创建插件功能。但在Debian 7.0 中,因为GNOME版本为GNOME3.4.2,通过网页访问网站时, 网站会报如下提示You do not appear to have an up to date version of GNOME3. You won’t be able to install extensions from here. See the about pagefor more information。因此安装以上两个插件包需要进行手动安装。

  首先在https://github.com/hedayaty/NetSpeed、https://github.com/dmo60 /CoverflowAltTab下载相关软件组建的ZIP包,将他们解压在用户的.local/share/gnome-shell /extensions/ 目录中,并将文件目录设置为XXX@XXX.XX模式,然后用tweak tool开启就行了。

来自:http://os.51cto.com/art/201305/395213.htm

Linux:Linux系统管理员不可不知的命令:sudo

  sudo是个统管一切的命令。它的字面意思是代表“超级用户才能做!”(super user do!)对Linux系统管理员或高级用户而言,它是必不可少的最重要的命令之一。你可曾有过这样的经历:在终端中试着运行某个命令,结果却遇到“拒绝访问”?这个就是你所需要的命令!但正所谓,权力越大,责任也越大!较之以根用户身份登录,或者使用 su “switch user” 命令,sudo要好得多。请耐心读下去,看看sudo能为你做些什么!

sudo:它有什么用途?

  那么,sudo实际能做些什么呢?如果你在任何Linux命令的前面加上“sudo”这个前缀,那么它会以提升的权限来运行该命令。执行某些管理任务需要提升的权限。有一天,你可能想运行一台LAMP(Linux Apache MySQL PHP)服务器,又要手动编辑配置文件。你可能还要重新启动或重置Apache Web服务器或者是其他服务后台程序。你甚至需要提升的权限来关闭或重新计算机。“嘿,谁关闭了这台机子?”

  如果你熟悉Windows,sudo与当你试图处理任何重要操作时,弹出来的Windows用户帐户控制(ACL)对话框非常相似,只是不如后者来得友好。在Windows中,如果你试图执行某项管理任务,对话框就会问你是否想继续执行(“你果真确信想要运行刚才点击的这个程序吗?”)随后执行该任务。在Mac机器上,一个安全对话框会弹出来,要求你输入密码,并点击“确定”。

  而Linux方面显得更有戏剧性。要是没有适当的权限,一些操作会显得相当怪异。你在编辑的那个重要的配置文件可能无法正确保存内容。你安装上去的那个程序可能就是拒绝运行。你已下载、想要编译的那段出色的源代码编译不了。你要是不走运的话,甚至还会看到“拒绝访问”或另一个错误信息。你最担心的种种情况都变成了现实,但你要做的就是请求权限!这就是为什么我们在执行像下面这种操作时,应该牢记事先请求超级用户权限:

sudo reboot

在这个屏幕截图中看看如果我们没有先借助sudo提升权限,会出现什么情况:

Linux:Linux系统管理员不可不知的命令:sudo
Linux:Linux系统管理员不可不知的命令:sudo

  首先,我们使用重启命令尝试重启系统。该命令没有提到:“必须是超级用户”。然后,我们试着用sudo重启。sudo要求你提供用户密码。请注意:它要求 你提供的是你的密码,而不是根密码。最后,我们看到表明现在将重启系统的广播信息。sudo就像是个神奇的命令,会发出神奇的指令。

Linux:Linux系统管理员不可不知的命令:sudo
Linux:Linux系统管理员不可不知的命令:sudo

为什么sudo比另一个办法更好?

  sudo是提升权限的最出色、最安全的方法。我们不妨看一下提升权限的另一个方法。作为切换用户命令,”su”会要求你输入根密码,并且给你一个超 级用户提示符,以#符号表示。这个#符号意味着”危险!你已作根用户登录上去!”你下达的第一个命令也许顺利执行完毕。但是你一旦忘了,会继续以根用户身 份登录。要是打错一个字,就完蛋了!你清除了整个硬驱,而不是清除你下载的那个盗版mp3文件。你的Web服务器和家庭公司统统不见了!如果是sudo, 你就得在每一个命令之前输入”sudo”。因而,你没必要记得切回到常规用户模式,那样发生的事故就会更少。

Suderos文件

  这个文件可谓是sudo的基础。它控制着谁可以使用sudo命令来获得提升的权限。它通常位于/etc/sudoers。想编辑这个文件,最有效最 安全的方式就是,使用visudo命令。这个命令会以提升权限启动vi编辑器,那样你就能编辑并保存该文件。它还会给sudoers文件上文件锁,那样别 人无法编辑该文件。一旦你完成了编辑工作,它会分析文件,查找有无简单的错误。编辑sudo文件要比仅仅使用任何旧的文本编辑器来得安全得多。

  该文件含有许多参数。你可以指定哪些用户或哪些用户助可以执行哪些命令。我们准备为自己授予访问sudo的权限,为此只要在底部添加:

username  ALL=(ALL)   ALL //为用户”username”授予sudo访问权%wheel    ALL=(ALL)   ALL //为属于wheel用户组的所有用户授予sudo访问权

  现在指定的用户名就能够使用所有根权限了。你还可以允许某个用户或用户组只对特定服务或服务器拥有sudo访问权,以取代ALL参数,不过那是另一个话题了。

几个选项

  与任何优秀的命令一样,也有几个很棒的选项可以让sudo处理更多的事务。

  • sudo -b会在后台运行命令。这对显示许多实时输出内容的命令来说很有用。
  • sudo -s 会运行以提升权限指定的外壳,为你提供#提示符(别忘了退出!)
  • sudo su -会让你成为根用户,并装入你那些自定义的用户环境变量。

有没有现在就用它?

  我们想要运行重要任务时,sudo提供了安全的提升权限。在Ubuntu用户当中,它也许是使用最广泛、功能最强大的命令,因为它已成为该发行版中的首选方法。既然你拥有了这么大的权利,那么在运行命令时务必要做到安全!世上可没有su-undo撤销命令!

原文:http://blog.linuxacademy.com/linux/linux-commands-for-beginners-sudo/

译文:http://os.51cto.com/art/201307/404879.htm

 已同步至 linux的微博

Linux:MAC 系统中显示中文MAN手册

最近在做中文MAN手册的翻译,发现MAC系统中的MAN命令不能像多数Linux发行版那样很好的显示中文MAN手册。

根据查找的资料,找到了解决方法:

1、首先要更新你的系统中的 groff 包,MAC中(10.8和10.9)的groff是1.18,是几年的版本了,需要升级,可以下载最新的groff 1.22 编译或者通过 port 来安装。

2、需要修改MAN的配置文件:

sudo vi /private/etc/man.conf

修改NROFF配置为:

NROFF           preconv -e utf8 | /opt/local/bin/groff -Wall -mtty-char -Tutf8 -mandoc -c

这样就可以将UTF8编码的MAN页面通过转码而被groff识别。

修改PAGER配置为:

PAGER           /usr/bin/less -isR

这样可以避免MAN手册页面中的ANSI Escape字符序列干扰(用于控制显示粗体等格式)

保存即可。

 

顺便,也说下如何彩色显示MAN的方法。

在环境变量中增加如下:

export GROFF_NO_SGR=1
export LESS_TERMCAP_mb=$'E[01;36m'
export LESS_TERMCAP_md=$'E[01;36m'
export LESS_TERMCAP_me=$'E[0m'
export LESS_TERMCAP_se=$'E[0m'
export LESS_TERMCAP_so=$'E[01;44;33m'
export LESS_TERMCAP_ue=$'E[0m'
export LESS_TERMCAP_us=$'E[01;33m'

这样MAN就是彩色了,如果希望调整颜色,可以相应修改上述的Escape代码。

不过这种方法有个副作用就是,会扰乱env这样的命令输出的显示。

所以,更好的解决方式是,使用env命令来重新定义man命令的环境:

man() {
  env GROFF_NO_SGR=1
    LESS_TERMCAP_mb=$'E[1;36m'
    LESS_TERMCAP_md=$'E[1;36m'
    LESS_TERMCAP_me=$'E[0m'
    LESS_TERMCAP_se=$'E[0m'
    LESS_TERMCAP_so=$'E[1;44;33m'
    LESS_TERMCAP_ue=$'E[0m'
    LESS_TERMCAP_us=$'E[1;33m'
    man "$@"
}

以上可以放到你的/etc/bashrc 里面。

来源:https://linux.cn/article-2163-1.html