内容简介:简单的做法是使用shell的which命令找出相关的二进制程序是否已经在搜索路径中。如果which没有找到要找的命令,使用whereis,该命令搜索更大范围的系统目录,与shell的搜索路径无关。locate的数据库通常由upgradedb命令定期更新,这条命令由cron来运行。因此,执行一次locate的结果不是总能反映出文件系统最新的变化。locate的搜索不止针对命令或软件包,而是能找到任何类型的文件。例如查找文件signal.h
书架上的这块大部头书在5.1的时候终于有时间来学习了,本文将长期更新,记录UNIX/Linux系统管理技术手册学习中的疑问与解答。该书在豆瓣评分颇高, UNIX/Linux系统管理技术手册 .勘误表在本文最后,如有疑问欢迎留言讨论。
笔记中实际操作的系统来自于ubuntu,运行在一款古董级的hp笔记本上。
判断软件是否已经安装
简单的做法是使用 shell 的which命令找出相关的二进制程序是否已经在搜索路径中。
root@52coder:~# which gcc /usr/bin/gcc
如果which没有找到要找的命令,使用whereis,该命令搜索更大范围的系统目录,与shell的搜索路径无关。
root@52coder:~# whereis gcc gcc: /usr/bin/gcc /usr/lib/gcc /usr/share/man/man1/gcc.1.gz
locate的数据库通常由upgradedb命令定期更新,这条命令由cron来运行。因此,执行一次locate的结果不是总能反映出文件系统最新的变化。locate的搜索不止针对命令或软件包,而是能找到任何类型的文件。例如查找文件signal.h
root@52coder:~# locate signal.h /root/PR/cl_ev/source/include/cl_ev_signal.h /root/PR/lualibs/source/ldap/openldap-2.4.23/include/ac/signal.h /root/PR/lualibs/thirdpart/luaposix/luaposix-34.0.4/doc/modules/posix.signal.html /root/PR/thirdpart/ldap/source/openldap-2.4.23/include/ac/signal.h /usr/include/signal.h /usr/include/asm-generic/signal.h /usr/include/boost/signal.hpp /usr/include/boost/process/detail/posix/signal.hpp /usr/include/boost/signals2/preprocessed_signal.hpp /usr/include/boost/signals2/signal.hpp /usr/include/boost/signals2/variadic_signal.hpp /usr/include/linux/signal.h /usr/include/x86_64-linux-gnu/asm/signal.h /usr/include/x86_64-linux-gnu/sys/signal.h /usr/src/linux-headers-5.0.0-13/arch/alpha/include/asm/signal.h /usr/src/linux-headers-5.0.0-13/arch/alpha/include/uapi/asm/signal.h /usr/src/linux-headers-5.0.0-13/arch/arc/include/uapi/asm/signal.h /usr/src/linux-headers-5.0.0-13/arch/arm/include/asm/signal.h /usr/src/linux-headers-5.0.0-13/arch/arm/include/uapi/asm/signal.h /usr/src/linux-headers-5.0.0-13/arch/arm64/include/uapi/asm/signal.h /usr/src/linux-headers-5.0.0-13/arch/h8300/include/asm/signal.h /usr/src/linux-headers-5.0.0-13/arch/h8300/include/uapi/asm/signal.h /usr/src/linux-headers-5.0.0-13/arch/hexagon/include/uapi/asm/signal.h /usr/src/linux-headers-5.0.0-13/arch/ia64/include/asm/signal.h /usr/src/linux-headers-5.0.0-13/arch/ia64/include/uapi/asm/signal.h /usr/src/linux-headers-5.0.0-13/arch/m68k/include/asm/signal.h /usr/src/linux-headers-5.0.0-13/arch/m68k/include/uapi/asm/signal.h /usr/src/linux-headers-5.0.0-13/arch/mips/include/asm/compat-signal.h /usr/src/linux-headers-5.0.0-13/arch/mips/include/asm/signal.h /usr/src/linux-headers-5.0.0-13/arch/mips/include/uapi/asm/signal.h /usr/src/linux-headers-5.0.0-13/arch/nios2/include/uapi/asm/signal.h /usr/src/linux-headers-5.0.0-13/arch/parisc/include/asm/signal.h /usr/src/linux-headers-5.0.0-13/arch/parisc/include/uapi/asm/signal.h /usr/src/linux-headers-5.0.0-13/arch/powerpc/include/asm/signal.h /usr/src/linux-headers-5.0.0-13/arch/powerpc/include/uapi/asm/signal.h /usr/src/linux-headers-5.0.0-13/arch/s390/include/asm/signal.h /usr/src/linux-headers-5.0.0-13/arch/s390/include/uapi/asm/signal.h /usr/src/linux-headers-5.0.0-13/arch/sh/include/uapi/asm/signal.h /usr/src/linux-headers-5.0.0-13/arch/sparc/include/asm/compat_signal.h /usr/src/linux-headers-5.0.0-13/arch/sparc/include/asm/signal.h /usr/src/linux-headers-5.0.0-13/arch/sparc/include/uapi/asm/signal.h /usr/src/linux-headers-5.0.0-13/arch/x86/include/asm/signal.h /usr/src/linux-headers-5.0.0-13/arch/x86/include/asm/fpu/signal.h /usr/src/linux-headers-5.0.0-13/arch/x86/include/uapi/asm/signal.h /usr/src/linux-headers-5.0.0-13/arch/xtensa/include/asm/signal.h /usr/src/linux-headers-5.0.0-13/arch/xtensa/include/uapi/asm/signal.h /usr/src/linux-headers-5.0.0-13/include/asm-generic/audit_signal.h /usr/src/linux-headers-5.0.0-13/include/asm-generic/signal.h /usr/src/linux-headers-5.0.0-13/include/linux/signal.h /usr/src/linux-headers-5.0.0-13/include/linux/sched/signal.h /usr/src/linux-headers-5.0.0-13/include/trace/events/signal.h /usr/src/linux-headers-5.0.0-13/include/uapi/asm-generic/signal.h /usr/src/linux-headers-5.0.0-13/include/uapi/linux/signal.h
ubuntu中查询是否已安装软件:
root@52coder:~# dpkg -l | grep gcc ii gcc 4:8.3.0-1ubuntu3 amd64 GNU C compiler ii gcc-8 8.3.0-6ubuntu1 amd64 GNU C compiler ii gcc-8-base:amd64 8.3.0-6ubuntu1 amd64 GCC, the GNU Compiler Collection (base package) ii gcc-9-base:amd64 9-20190402-1ubuntu1 amd64 GCC, the GNU Compiler Collection (base package) ii libgcc-8-dev:amd64 8.3.0-6ubuntu1 amd64 GCC support library (development files) ii libgcc1:amd64 1:9-20190402-1ubuntu1 amd64 GCC support library
redhat中查询是否已安装软件:
rom -q | grep gcc
安装软件
使用源码安装软件时一般是使用./configure make make install三条命令
./configure --help查看所有的配置选项,另一个有用的配置选项是--prefix=directory,这个选项可以把软件安装到/usr/local之外的其它目录。root@52coder:~/valgrind-3.15.0# ./configure --help `configure' configures Valgrind 3.15.0 to adapt to many kinds of systems. Usage: ./configure [OPTION]... [VAR=VALUE]... To assign environment variables (e.g., CC, CFLAGS...), specify them as VAR=VALUE. See below for descriptions of some of the useful variables. Defaults for the options are specified in brackets. Configuration: -h, --help display this help and exit --help=short display options specific to this package --help=recursive display the short help of all the included packages -V, --version display version information and exit -q, --quiet, --silent do not print `checking ...' messages --cache-file=FILE cache test results in FILE [disabled] -C, --config-cache alias for `--cache-file=config.cache' -n, --no-create do not create output files --srcdir=DIR find the sources in DIR [configure dir or `..'] Installation directories: --prefix=PREFIX install architecture-independent files in PREFIX [/usr/local] --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX [PREFIX] By default, `make install' will install all the files in `/usr/local/bin', `/usr/local/lib' etc. You can specify an installation prefix other than `/usr/local' using `--prefix', for instance `--prefix=$HOME'. For better control, use the options below. Fine tuning of the installation directories: --bindir=DIR user executables [EPREFIX/bin] --sbindir=DIR system admin executables [EPREFIX/sbin] --libexecdir=DIR program executables [EPREFIX/libexec] --sysconfdir=DIR read-only single-machine data [PREFIX/etc] --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] --localstatedir=DIR modifiable single-machine data [PREFIX/var] --libdir=DIR object code libraries [EPREFIX/lib] --includedir=DIR C header files [PREFIX/include] --oldincludedir=DIR C header files for non-gcc [/usr/include] --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] --datadir=DIR read-only architecture-independent data [DATAROOTDIR] --infodir=DIR info documentation [DATAROOTDIR/info] --localedir=DIR locale-dependent data [DATAROOTDIR/locale] --mandir=DIR man documentation [DATAROOTDIR/man] --docdir=DIR documentation root [DATAROOTDIR/doc/valgrind] --htmldir=DIR html documentation [DOCDIR] --dvidir=DIR dvi documentation [DOCDIR] --pdfdir=DIR pdf documentation [DOCDIR] --psdir=DIR ps documentation [DOCDIR] Program names: --program-prefix=PREFIX prepend PREFIX to installed program names --program-suffix=SUFFIX append SUFFIX to installed program names --program-transform-name=PROGRAM run sed PROGRAM on installed program names System types: --build=BUILD configure for building on BUILD [guessed] --host=HOST cross-compile to build programs to run on HOST [BUILD] Optional Features: --disable-option-checking ignore unrecognized --enable/--with options --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) --enable-FEATURE[=ARG] include FEATURE [ARG=yes] --enable-silent-rules less verbose build output (undo: "make V=1") --disable-silent-rules verbose build output (undo: "make V=0") --enable-maintainer-mode enable make rules and dependencies not useful (and sometimes confusing) to the casual installer --enable-dependency-tracking do not reject slow dependency extractors --disable-dependency-tracking speeds up one-time build --enable-only64bit do a 64-bit only build --enable-only32bit do a 32-bit only build --enable-inner enables self-hosting --enable-ubsan enables the undefined behaviour sanitiser --enable-lto enables building with link time optimisation --enable-tls platform supports TLS Optional Packages: --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) --with-tmpdir=PATH Specify path for temporary files --with-mpicc= Specify name of MPI2-ised C compiler Some influential environment variables: CC C compiler command CFLAGS C compiler flags LDFLAGS linker flags, e.g. -L<lib dir> if you have libraries in a nonstandard directory <lib dir> LIBS libraries to pass to the linker, e.g. -l<library> CPPFLAGS (Objective) C/C++ preprocessor flags, e.g. -I<include dir> if you have headers in a nonstandard directory <include dir> CPP C preprocessor CXX C++ compiler command CXXFLAGS C++ compiler flags LTO_RANLIB Library indexer command for link time optimisation AR Archiver command LTO_AR Archiver command for link time optimisation CCAS assembler compiler command (defaults to CC) CCASFLAGS assembler compiler flags (defaults to CFLAGS) Use these variables to override the choices made by `configure' or to help it to find libraries and programs with nonstandard names/locations. Report bugs to <valgrind-users@lists.sourceforge.net>.
常用快捷键
回到命令行尾。
标准错误重定向
在搜索文件的时候使用find / -name core,通常会出现很多"permission denied"这样的错误消息,从而把真正的结果给淹没在混乱的输出中。要消除所有出错的消息,可以使用如下命令:
find / -name core 2> /dev/null
sort命令
sort -t: -k3,3 -n /etc/group
对/etc/group文件的内容按照由冒号分割的第三个域即组ID进行排序,-n选项指定按照整数排序。
对sort命令的详细解释及例子参考 Linux sort commandgrep命令
grep命令有许多选项,这包括:打印匹配的行数-c,匹配时忽略大小写-i,打印不匹配的行-v,打印匹配的文件的名字-l.
勘误表
p27 2.1.4常见的过滤命令上面的例子
root@52coder:~# echo "There are `wc -l /etc/passwd` lines in the passwd file." There are 45 /etc/passwd lines in the passwd file. root@52coder:~# echo "There are `cat /etc/passwd | wc -l` lines in the passwd file." There are 45 lines in the passwd file.
以上所述就是小编给大家介绍的《UNIX/Linux系统管理技术手册》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:- 作业收缴系统设计手册(自写开源小系统)
- 作业收缴系统使用手册(自写开源小系统)
- 救火必备!问题排查与系统优化手册
- MySQL™ 参考手册(关于本手册)
- LLVM 程序员手册 —— LLVM 4.0 文档(非常非常完整的手册)
- [译]Python手册——模块
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。