Linux系统可以报告比您可能知道的更多的配置细节。诀窍是使用getconf.命令并知道你在寻找什么。虽然看着。您可能会发现自己有点不知所措,有多少设置。
要开始,让我们看一些你可能希望看到回答一些重要问题的一些设置。
首先,文件名可以有多长?
您可以通过查看来查看此设置name_max.设置。
$ getconf NAME_MAX x 255
上面命令末尾的“x”似乎是避免错误所必需的(不知道为什么)。您还可以使用下面所示的命令查看该值。的-一种原因getconf.显示所有设置和Grep.命令然后选择任何以"NAME_MAX"开头的设置。
$ getconf -a | grep ^NAME_MAX NAME_MAX 255
您的系统是32位还是64位?
$ getconf LONG_BIT 64
一个用户可以同时运行多少个进程?
$ getconf -a | grep CHILD CHILD_MAX 23581 _POSIX_CHILD_MAX 23581
这是每个用户ID允许的并发进程的最大数量。进程显然不能同时使用CPU,但这是可以活动的数量。
用户名可以有多长?
$ getconf LOGIN_NAME_MAX 256
想看看这个吗?如果您创建如下所示的非常长的用户名,就不会遇到任何问题。
$ sudo useradd monsterfromthedeepbluesea $ ls / home bugfarm gijoe lost +发现Nemo Snakey dbell Gino Monsterfromthedeepbluesea newuser sysimage dorothy Jadem Myacct Shark Tadpole eel lola自己shs
我无法想象有人愿意输入接近256个字符来登录。尽管如此,这表明用户名可以长得离谱,如果你需要的话。
列出所有设置
如果您想列出所有可用的配置细节,请做好准备。它包括320个设置。
$ getconf -a | wc -l 320
以下是列表的开头的样子,其中一些设置简要说明:
$ getconf -a |head -20 link_max 127 <==文件的最大名称数可以具有_posix_link_max 127 <==在输入编辑时在输入的输入行中键入的max_canon 255 <== max文本中的字符数
启用_POSIX_MAX_CANON 255 <== file name maximum MAX_INPUT 255 _POSIX_MAX_INPUT 255 NAME_MAX 255 _POSIX_NAME_MAX 255 PATH_MAX 4096 <==限制(如果有的话)整个文件名的长度
(包括路径)_posix_path_max 4096 pipe_buf 4096 _posix_pipe_buf 4096 sock_maxbuf _posix_async_io _posix_chown_rectrict 1 _posix_no_trung 1 _posix_pro_io _posix_sync_io _posix_vdisable 0 arg_max 2097152 <==新进程的最大参数长度
一个相对简单的开始方法getconf.是使用列表中的设置使用Grep..下面是所有包含“NAME”的设置:
$ getconf -a | grep NAME NAME_MAX 255 _POSIX_NAME_MAX 255 LOGNAME_MAX 256 TTY_NAME_MAX 32 TZNAME_MAX _POSIX_TZNAME_MAX CHARCLASS_NAME_MAX 2048 HOST_NAME_MAX 64 LOGIN_NAME_MAX 256
可能与Linux用户最相关的一些设置是为文件名最大长度的各种内容定义的最大值。考虑到设置,我怀疑我知道任何人都有曾因抱怨的抱怨,以至于他无法创建一个包含超过255个字符的名称的文件。系统是否会告诉您您是否超过该限制?你打赌它会。这是一个测试:
触摸12345678901234567890123456789012345678901234567890123456789012345678901234567890美元
1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678
901234567890123456789012345678901234567890123456789012345678901234567890123456789012345
触摸12345678901234567890123456789012345678901234567890123456789012345678901234567890美元
1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678
9014567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234566触摸:无法触摸'1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678777567877567890123456789012345677
8901234567890123456789012345678901234567890123456789012345678901234567890123456789012345
6789012345678901234567890123456789012345678901234567890123456789012345678901234567890123
4567890123456”:文件名太长< = =哦!
一个额外的角色将我们放过第二个限制触碰上面显示的命令。
最大设置
要列出所有名称中带有“MAX”的设置,运行如下命令:
$ getconf -a |grep max |柱LINK_MAX 127 _POSIX_NGROUPS_MAX 65536 _POSIX_LINK_MAX 127 _POSIX_OPEN_MAX 1024 MAX_CANON 255 _POSIX_SSIZE_MAX 32767 _POSIX_MAX_CANON 255 _POSIX_STREAM_MAX 16 MAX_INPUT 255 TIMER_MAX _POSIX_MAX_INPUT 255 _POSIX_TZNAME_MAX NAME_MAX 255 _T_IOV_MAX _POSIX_NAME_MAX 255 BC_BASE_MAX 99 PATH_MAX 4096 BC_DIM_MAX 2048 _POSIX_PATH_MAX 4096 BC_SCALE_MAX 99 SOCK_MAXBUF BC_STRING_MAX 1000 ARG_MAX 2097152 CHARCLASS_NAME_MAX 2048 ATEXIT_MAX 2147483647 COLL_WEIGHTS_MAX 255 CHAR_MAX127 EQUIV_CLASS_MAX CHILD_MAX 23581 EXPR_NEST_MAX 32 INT_MAX 2147483647 LINE_MAX 2048 IOV_MAX 1024 POSIX2_BC_BASE_MAX 99 LOGNAME_MAX 256 POSIX2_BC_DIM_MAX 2048 MB_LEN_MAX 16 POSIX2_BC_SCALE_MAX 99 NGROUPS_MAX 65536 POSIX2_BC_STRING_MAX 1000 NL_ARGMAX 4096 POSIX2_COLL_WEIGHTS_MAX 255 NL_LANGMAX 2048 POSIX2_EXPR_NEST_MAX 32 NL_MSGMAX 2147483647 _POSIX2_LINE_MAX 2048 NL_NMAX 2147483647 POSIX2_LINE_MAX 2048 NL_SETMAX 2147483647 POSIX2_RE_DUP_MAX 32767 NL_TEXTMAX 2147483647 RE_DUP_MAX 32767Open_max 1024 symloop_max pass_mAX 8192 STREAM_MAX 16 PTHREAD_KEYS_MAX 1024 AIO_LISTIO_MAX PTHREAD_THREADS_MAX AIO_MAX SCHAR_MAX 127 AIO_PRIO_DELTA_MAX 20 SHRT_MAX 32767 DELAYTIMER_MAX 2147483647 SSIZE_MAX 32767 HOST_NAME_MAX 64 TTY_NAME_MAX 32 LOGIN_NAME_MAX 256 TZNAME_MAX MQ_OPEN_MAX UCHAR_MAX 255 MQ_PRIO_MAX 32768 UINT_MAX 4294967295 RTSIG_MAX 32 UIO_MAXIOV 1024 SEM_NSEMS_MAX ULONG_MAX 18446744073709551615 SEM_VALUE_MAX 2147483647 USHRT_MAX 65535 SIGQUEUE_MAX 23581 _POSIX_ARG_MAX 2097152 POSIX_REC_MAX_XFER_SIZE _POSIX_CHILD_MAX23581 symlink_max.
底部附近的一个非常大的环境,ulong_max,是unsigned long int类型对象的最大值。
确定84个最大设置实际代表的每个可能需要一些时间。有些文件在类似的文件中h文件如下所示。
$ cat /usr/include/linux/limits.h /* SPDX-License-Identifier:gpl - 2.0与Linux-syscall-note * /的ifndef _LINUX_LIMITS_H # define _LINUX_LIMITS_H # define NR_OPEN 1024 # define NGROUPS_MAX 65536 / *补充组id可用* / # define ARG_MAX 131072 / * #字节的arg游戏+环境exec () * / # define LINK_MAX 127 / * #链接文件可能* / # define MAX_CANON 255 / *规范输入队列的大小* / # define MAX_INPUT 255 / *输入缓冲区的大小* / # define NAME_MAX长的255 / * #字符在文件名字* / # define PATH_MAX 4096 / * #字符在一个路径名包括nul * / # define PIPE_BUF原子4096 / * #字节写入管道* / # define XATTR_NAME_MAX 255 / * #字符在一个扩展属性名称* / # define XATTR_SIZE_MAX 65536 / *的大小#define RTSIG_MAX (64k) */ #define RTSIG_MAX (64k) */ #define RTSIG_MAX (64k) */
的h文件意味着提供信息,不能用于更改设置值。
包起来
最有趣的是getconf.命令的输出显示了大多数设置实际上是多么慷慨,以及在Linux系统上有多少东西受到了限制。