查找所需文件由哪个软件包提供:
在Linux下,可以看看/usr/include下有没有这个文件(DEB系统可以用apt-file find include/thread.h这样的命令来查哪个软件包提供了所需的文件) 在使用apt-file前首先按照,之后update。然后在执行命令即可。
sudo apt-get提示缺少锁的解决
当软件中心工作时,命令行方式执行sudo apt-get会提示缺少锁。这时候如果软件中心工作正常,那么退出后会释放锁。但是如果软件中心挂了(很被催的经历,发生在安装某软件期间死机后),那么需要强行释放锁。出现问题时系统提示如下:
无法获得锁 /var/lib/dpkg/lock - open (11: 资源暂时不可用)
E: 无法锁定管理目录(/var/lib/dpkg/),是否有其他进程正占用它?”
解决方法如下:
1.终端输入 ps -aux ,列出进程,找到含有apt-get的进程,直接sudo kill PID解决。
2.强制解锁--命令:
sudo rm /var/cache/apt/archives/lock
sudo rm /var/lib/dpkg/lock
Eclipse环境设置:
增加工程需要引用的库文件
--在project中选择properties,然后选择C/C++ Build,选择settings,在里面的libraries中,增加已经引用的库,注意前面的lib和后面的so都不需要加入,只是填中间的即可。
设置提示信息响应速度
---window->preferences->Editor->content Assist->Delay.默认值500ms,
设置双击函数名称时,显示函数定义信息窗口的背景色(默认为黑色,字体黑色,结果看不见了。)--方法修改ubuntu系统主题背景色。Eclipse中查看完整函数名提示:alt+/
Eclipse自动注释本行文字:ctrl+/
在给工程设置链接库路径时,需要注意不支持子目录查找,因此需要显示定义各个库的目录。Alt+/:代码提示 Ctrl+/:注释/取消注释 Ctrl+D:删除光标所在行 Ctrl+K:将光标停留在变量上,按Ctrl+K键可以查找到下一个同样的变量 Shift+Ctrl+K:和Ctrl+K查找的方向相反 Shift+Ctrl+F:代码格式化。如果选择了代码,仅对所选代码格式化 Shift+Ctrl+O:快速地导入import Shift+Ctrl+X:将所选字符转为大写 Shift+Ctrl+Y:将所选字符转为小写 Ctrl+M:快速对当前视图最大化 Ctrl+O:在代码中打开类似大纲视图的小窗口 Ctrl+单击:可以跟踪方法和类的源码 Alt+左右方向键:跳到前一次/后一次的编辑位置。 Ctrl+鼠标停留:可以显示类和方法的源码 双击左括号(小括号、中括号、大括号),将选择括号内的所有内容。 Ctrl+1:光标停在某变量上,按Ctrl+1键,可以提供快速重构方案。选中若干行,按Ctrl+1键可将此段代码放入for、while、if、do或try等代码块中。 F3:打开声明该引用的文件 F4:打开类型层次结构 F5:单步跳入 F6:单步跳过 F7:单步跳出 F8:继续,如果后面没有断点,程序将运行完 Ctrl+H:打开搜索窗口 Ctrl+Shift+S:保存全部 Alt+Left:回退一步 Alt+Right:前跳一步 Ctrl+Shift+T:打开类型 Ctrl+Shift+R:打开资源 Ctrl+Q:回到最后一次编辑的地方 Ctrl+Shift+G: 在workspace中搜索引用 Ctrl+Alt+Down: 复制高亮显示的一行或多行 Alt+Up(Down):将一行或者多行向上或者向下移动
ubuntu系统主题背景色修改(12.04)
--参见http://blog.csdn.net/androidyue/article/details/9295505。结果发现不行。最后去了ubuntu中文论坛,结论是修改一个巨丑陋的默认主题后,解决。
抓包
安装了wireshark抓包,结果提示没有可供抓包的网卡。后来发现是权限问题。也就是说需要用root帐号登录。ubuntu下用root登录的方法(转载):经测试,没成功
12.04默认是不允许root登录的,在登录窗口只能看到普通用户和访客登录。以普通身份登陆Ubuntu后我们需要做一些修改,普通用户登录后,修改系统配置文件需要切换到超级用户模式,在终端窗口里面输入: sudo -s.然后输入普通用户登陆的密码,回车即可进入 root用户权限模式。然后执行: vi /etc/lightdm/lightdm.conf.
增加 greeter-show-manual-login=true allow-guest=false . 修改完的整个配置文件是
[SeatDefaults]
greeter-session=unity-greeter
user-session=ubuntu
greeter-show-manual-login=true #手工输入登陆系统的用户名和密码
allow-guest=false #不允许guest登录
然后我们启动root帐号:
sudo passwd root
根据提示输入roott帐号密码。
重启ubuntu,登录窗口会有“登录”选项,这时候我们就可以通过root登录了。
在usb上划分分区
fdisk /dev/sdb
m --命令列表
d--删除分区
w--保存修改
n--增加分区
p--打印当前分区信息
格式化usb
方法1:fdisk
fdisk -l 对比查找usb挂载后的盘符。umount该盘符。
mkfs -t ext3 /dev/sdb1
注意,第一次做失败了,是因为错误输入sdb4,导致格式化了u盘的第四个分区,但是默认使用的分区1没有格式化。
usb的使用只能从u盘往外拷贝,不能往里拷贝
格式化usb之后,以为就可以拷贝数据了,结果悲剧的发现,只能从u盘往外拷贝,不能往里拷贝。
经查是ext3作为文件格式支持acl设置。
而ntfs不支持acl 所以直接挂载后就可以拷贝了。
解决方法:
方法一
首先插入u盘,sudo fdisk -l查看了盘符。
然后,sudo mkdir /home/work/usb
sudo mount /dev/sdc4 /home/work/usb
发现usb目录隶属于root。
进入命令行,sudo cp。。。。。。
当然,使用后不要忘记umount
方法二
能否考虑通过一些参数设置,允许任意账户使用u盘呢?
ubuntu下抓包
安装并且使用了wireshark。结果打开提示没有可操作的网卡。
后发现是需要root权限。进入命令行su root后sudo wireshark即可。
wireshark提示可以有更稳妥的方案。赶时间,未尝试。
用树形显示进程和线程
转:http://hi.baidu.com/willor/blog/item/fd58e6c5ea840ca38326ac6a.htmlps -ef f
用树形显示进程和线程,比如说我想找到proftp现在有多少个进程/线程,可以用
$ ps -ef f | grep proftpd
nobody 23117 1 0 Dec23 ? S 0:00 proftpd: (accepting connections)
jack 23121 23117 0 Dec23 ? S 7:57 /_ proftpd: jack - ftpsrv: IDLE
jack 28944 23117 0 Dec23 ? S 4:56 /_ proftpd: jack - ftpsrv: IDLE
这样就可以看到proftpd这个进程下面挂了两个线程。
在Linux下面好像因为没有真正的线程,是用进程模拟的,有一个是辅助线程,所以真正程序开的线程应该只有一个。
另外用pstree -c也可以达到相同的效果
$ pstree -c | grep proftpd
|-proftpd-+-proftpd
| `-proftpd
如何查看进程中各线程的内存占用情况?
用ps aux只能查看到进程,如果进程里面使用了pthread编程,用什么命令才能查询到进程里的线程资源占用?ps aux | grep不就是了
如何开启ipv4数据转发功能
临时:echo "1">/proc/sys/net/ipv4/ip_forward固定:修改/etc/sysctl.conf,取消这一行的注释:
net.ipv4.ip_forward= 1
然后使之立即生效
如何配置nat服务(iptables)
设置iptables规则临时:iptables -t nat -A POSTROUTING -j MASQUERADE
- 固定:
- 或者把上面这个写到一个启动脚本中(比如/etc/rc.local)。这里还有另外一个版本:
- iptables -F
- iptables -P INPUT ACCEPT
- iptables -P FORWARD ACCEPT
- iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o eth1 -jMASQUERADE
- 据说“第一句是清除掉之前所有的iptables规则,第二第三句是允许接收和发送数据包,第四句是在eth1网口上NAT“,只是比上面的多了几句废话,最后指定网卡参数什么,还没试过。iptables的用法还得好好学。
命令行方式修改IP地址
1.给一个网卡配置多个IP地址
ifconfig eth0:0 192.168.1.2 netmask 255.255.255.0
ifconfig eth0:1 192.168.1.3 netmask 255.255.255.0
ifconfig eth0:3 192.168.1.4 netmask 255.255.255.0
2.取消一个IP地址
ifconfig eth0:3 down
常见问题
修改拥有者:chown user file修改权限 :chmod 777 file
修改组:chgrp group file
编译:gcc -Wall main.c -g -o test
注意,此处加入-c,则不可执行。
-------------------------------------------------------------------------------------------------------------------------------------------------------------------
dup2(int oldfd,int newfd);
这个函数是复制文件描述符,将newfd描述符所对应的文件表 改成 oldfd所对应的文件表项。之后,newfd与oldfd指向同一个文件表。这样就将newfd重定向到oldfd.
dup2(4,1),这个就是将标准输出重定向到文件描述符4所对应的文件。系统默认是将文件描述符1对应标准输出(终端),也就是说,我们使用向描述符1写数据,会写到终端。调用dup2(4,1)之后,会写到描述符4所对应的文件。
dup2(1,4),这个是将描述符4重定向到标准输出,如果向描述符4写数据,会输出到终端。
获取文件修改时间
Linux下可以用
date -r filename "+%F %T"
-------------------------------------------------------------------------------------------------------------------------------------------------------------------
Linux的man使用
Linux的man手册共有以下几个章节:代號 | 代表內容 |
1 | 使用者在shell中可以操作的指令或可执行档 |
2 | 系統核心可呼叫的函数与工具等 |
3 | 一些常用的函数(function)与函数库(library),大部分是C的函数库(libc) |
4 | 装置档案的说明,通常在/dev下的档案 |
5 | 设定档或者是某些档案的格式 |
6 | 游戏(games) |
7 | 惯例与协定等,例如Linux档案系统、网络协定、ASCII code等等的說明 |
8 | 系統管理員可用的管理指令 |
9 | 跟kernel有关的文件 |
- man是按照手册的章节号的顺序进行搜索的,比如:
只会显示sleep命令的手册,如果想查看库函数sleep,就要输入:
man 3 sleep
-------------------------------------------------------------------------------------------------------------------------------------------------------------------
linux下查看静态库和动态库是32位还是64位
动态库:
file ./usr/libexec/sudo_noexec.so
静态库:
objdump -a libmqapi.a
DOS/Windows和Linux/Unix间的文件格式转换
vi file先按 EXC 再按 :
输入 :set ff = unix 回车
或者 输入set fileformat=unix
tar jxvf linux-2-4-2.tar.bz2
df查看文件系统的可用空间及使用情况
df命令可以显示目前所有文件系统的可用空间及使用情形,举例如下
以下是代码片段:[yayug@yayu ~]$ df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 3.9G 300M 3.4G 8% /
/dev/sda7 100G 188M 95G 1% /data0
/dev/sdb1 133G 80G 47G 64% /data1
/dev/sda6 7.8G 218M 7.2G 3% /var
/dev/sda5 7.8G 166M 7.2G 3% /tmp
/dev/sda3 9.7G 2.5G 6.8G 27% /usr
tmpfs 2.0G 0 2.0G 0% /dev/shm
查看文件大小使用命令du
以下是代码片段:[root@bsso yayu]# du -h --max-depth=1 work/testing
27M work/testing/logs
35M work/testing
[root@bsso yayu]# du -h --max-depth=1 work/testing/*
8.0K work/testing/func.php
27M work/testing/logs
8.1M work/testing/nohup.out
8.0K work/testing/testing_c.php
12K work/testing/testing_func_reg.php
8.0K work/testing/testing_get.php
8.0K work/testing/testing_g.php
8.0K work/testing/var.php
[root@bsso yayu]# du -h --max-depth=1 work/testing/logs/
27M work/testing/logs/
[root@bsso yayu]# du -h --max-depth=1 work/testing/logs/*
24K work/testing/logs/errdate.log_show.log
8.0K work/testing/logs/pertime_show.log
27M work/testing/logs/show.log
ldd <可执行文件名>
查看可执行文件链接了哪些 系统动态链接库 nm <可执行文件名>
查看可执行文件里面有哪些符号 strip <可执行文件名>
去除符号表可以给可执行文件瘦身 strings <可执行文件名>从可执行程序里面提取出来一点什么文本信息的话
gzip压缩和gunzip解压缩
压缩保留源文件的方法:
gzip –c filename > filename.gz压缩不保留源文件
gzip -9v filename
Linux解压缩保留源文件的方法:
gunzip –c filename.gz > filename
Linux查看系统日志的方法:
lastb -f /var/adm/wtmp针对ubuntu lastb -f /var/log/wtmp